분류 전체보기

Algorithm

[알고리즘] 동적 계획법(Dynamic Programming, DP) 알아보기 ( 백준 24416번 피보나치 수-1 with 자바 )

🤔 동적 계획법 DP? 복잡한 문제를 더 작은 하위 문제로 나누어 해결하는 알고리즘 설계 기법입니다. 즉, 문제 해결을 위해 설계하는 방법이나 접근 방식을 말합니다. 💡 메모이제이션(Memoization) 동일한 계산을 반복해야 할 때, 이전에 계산한 값을 메모리에 저장함으로써 동일한 계산의 반복 수행을 제거하여 프로그램 실행 속도를 빠르게 하는 기술이다. 동적 계획법의 핵심이 되는 기술이다. wikipedia 동적 계획법(DP)의 핵심이 되는 기술로 가장 큰 특징이라고 할 수 있습니다. 상향식, 하향식 접근 방식을 통해 문제를 작은 하위 문제로 나누어 이를 해결하면서 하위 문제의 결과를 메모이제이션 즉 메모리에 저장함으로써 중복 연산을 줄일 수 있습니다. 🔎 상향식(bottom-up) 접근 작은 하위 ..

Backend

테스트 코드 왜 작성할까요? (TDD?)

🤔 테스트 코드? 소프트웨어의 기능과 동작을 테스트하는 데 사용되는 코드입니다. 개발자가 작성한 코드를 실행하여 예상된 결과가 정상적으로 나오는지 확인하는 데 사용됩니다. E2E(End to End), 통합 테스트(Integration Test), 단위 테스트(Unit Test) 와 같은 다양한 테스트가 있습니다. 1. 단위 테스트 하나의 모듈(기능)이 의도한 대로 작동하는지 확인하는 과정입니다. 2. 통합 테스트 단위 테스트에서 검증된 개별 모듈(기능)들을 결합하여 예상대로 상호작용하고 있는지 확인하는 테스트입니다. 주로 외부 의존성(ex.데이터베이스)에 대해 테스트 합니다. 3. E2E(End to End) 실제 소프트웨어를 사용하는 사용자 시나리오를 테스트함으로써 소프트웨어가 의도한 대로 동작하는지..

Algorithm/문제

[BOJ/JAVA] 백준 2580번 스도쿠 ( 백트래킹 )

✔ 문제 난이도 : 골드4 🥇 2580번: 스도쿠 스도쿠는 18세기 스위스 수학자가 만든 '라틴 사각형'이랑 퍼즐에서 유래한 것으로 현재 많은 인기를 누리고 있다. 이 게임은 아래 그림과 같이 가로, 세로 각각 9개씩 총 81개의 작은 칸으로 이루 www.acmicpc.net ✔ 문제 풀이 실제 스도쿠 규칙과 같이 가로줄, 세로줄, 작은 정사격형 안의 수들이 1부터 9까지 하나씩 있어야합니다. 숫자가 입력 되었을 때 가로줄, 세로줄, 작은 정사각형을 탐색하여 중복된 숫자가 있는지 체크하는 로직은 쉽게 머리속에 떠올릴 수 있었지만, 어떤 흐름으로 어떤 조건을 사용하여 재귀호출하며 백트래킹 과정을 거칠지는 많이 고민이 필요한 문제였습니다. 🔎 isChecked 가로와 세로체크는 모든 9개의 범위를 탐색하여 ..

Backend/JPA

[JPA] 프록시, 즉시&지연 로딩, 영속성 전이, 고아 객체

✔ 프록시(Proxy) 만약 비즈니스 로직에서 Member에 대한 정보를 가지고올 때 .find()를 통해 Member Entity와 연관관계 매핑된 Entity를 join하여 한번에 다 가지고온다. 하지만 Member에 대한 정보만 쓰려는 케이스는 불필요한 다른관계의 Entity정보까지 join을 통해 가지고오게 되는데 둘 다 쓰는 케이스에서는 편리하겠지만 Member에대한 정보만 사용하는 케이스에서는 낭비가 될 수 있다. 이러한 불필요한 낭비를 JPA는 프록시와 지연로딩을 사용하여 해결하고 있다. 실제클래스를 상속 받아서 만들어지고 겉 모양이 같다. EntityManager.find() - 데이터베이스를 통해 실제 엔티티 객체 조회 EntityManager.getReference() - 데이터베이스 ..

Algorithm/문제

[BOJ/JAVA] 백준 9663번 N-Queen ( 백트래킹 )

✔ 문제 난이도 : 골드4 🥇 9663번: N-Queen N-Queen 문제는 크기가 N × N인 체스판 위에 퀸 N개를 서로 공격할 수 없게 놓는 문제이다. N이 주어졌을 때, 퀸을 놓는 방법의 수를 구하는 프로그램을 작성하시오. www.acmicpc.net ✔ 문제 풀이 N x N의 체스판 위에 N개의 퀸을 서로 공격할 수 없게 놓는 경우의 수를 구하는 문제입니다. 🤔 처음 접근 처음 접근할 때에는 첫번째 퀸을 두고 그 퀸의 공격범위를 모두 체크(방문처리)한 후 공격범위가 아닌 부분 부터 두번째 퀸을 두고 공격범위를 체크하며 나아가다 퀸 N개 즉 깊이(depth)가 N이 되었을때 리턴하여 백트래킹을 수행하려고 했습니다. 하지만 공격범위를 모두 체크하는 과정에서 이중 for문을 사용하였고 재귀호출이 끝..

Project/SpringBoot+JPA 게시판

[SpringBoot + JPA 게시판 만들기] 게시판CRUD 서비스 로직 작성 + 테스트 코드 추가

🤔 시작하기 전에 개발 과정에서 만난 고민 builder?, Spring Data JPA?, DTO? [SpringBoot + JPA 게시판 만들기] 개발 과정에서 만난 고민 builder?, Spring Data JPA?, DTO? 🤔 고민 강의, GPT, 구글링을 하며 혼자서 개발하다보니 계속해서 새로운 문제에 직면하게 되었다. 객체를 생성할때에는 어떤 방법이 더 좋지? 인터페이스를 만들고 구현체를 만들어 역할과 구 average1.tistory.com 1. 객체 생성시 Builder 패턴을 사용하여 가독성을 높이고 일관성과 불변성을 해칠 위험을 제거했습니다. 2. Entity와 DTO의 범위를 Service계층 까지로 설정하였습니다, 즉 변환( Entity -> DTO, DTO -> Entity )..

장용석
'분류 전체보기' 카테고리의 글 목록 (3 Page)