본문 바로가기

전체 글

(96)
[프로그래머스 12945] Level2 피보나치 수 문제 URL https://school.programmers.co.kr/learn/courses/30/lessons/12945 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제풀이 Key Point 재귀 호출에 대해 반복되는 동일 연산에 대한 처리를 고민해야한다.(시간초과와 관련됨) 결과를 1234567로 나누라는 요구사항이 있다. 피보나치 수의 점화식을 세우면 F(n) = F(n-1) + F(n-2) (F(n) = 0, F(n) = 1)이다. 따라서 (A + B)%C = ((A % C) + (B % C)) % C라는 공식을 이용할 필요가 있다. (또는..
[Test Code] TDD와 BDD와 ATDD에 대해서 TDD(Test Driven Development) 테스트 주도 개발 기능 중점 BDD(Behavioral Driven Development) 행동 주도 개발 시스템 동작 중점 ATDD(Acceptance Test Driven Development) 인수 테스트 주도 개발 요구사항 중점 [TDD란?] 개발자의 관점에서 구현된 테스트 방법론이다. 모든 작은 기능에 대한 테스트 사례를 설계하고 작성을 하는 것이다. 주요 의도는 테스트 실패 시에만 새로운 코드를 수정하거나 작성하는 것이다. 따라서 테스트 스크립트 중복이 줄고 애자일 개발 생태계에서 널리 사용되고 있다. TDD 접근 방식에서 자동화된 테스트 스크립트는 코드의 기능적인 부분보다 먼저 작성된다. TDD 단계 문서에 지정된 요구사항을 기반으로 개발자..
[프로그래머스 87390] Level2 n^2배열 자르기 문제 URL https://school.programmers.co.kr/learn/courses/30/lessons/87390 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제풀이 Key Point i행 j열의 값은 i와 j중 더 큰 값에 +1을 한 것이다. (0행 0열부터 시작한다고 가정) n x n 배열을 행 기준으로 잘라 이어 붙였을 때, 각 인덱스는 [i / n][i % n]이 된다. 예를들어, 3 x 3 배열에서 인덱스 2의 위치를 찾는 다면 [2 / 3 = 0][2 % 3 = 2]가 되므로 0행2열의 값이 된다. 7의 위치를 찾는 다면 [7 ..
[프로그래머스 12924] 숫자의 표현 문제 URL https://school.programmers.co.kr/learn/courses/30/lessons/12924 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제풀이 Key Point 연속된 자연수들의 합을 구해야한다. 연속된 자연수의 합이 n보다 작다면 큰쪽 값을 하나 추가해서 다시 합을 구한다. 연속된 자연수의 합이 n보다 크다면 작은쪽 값을 하나 빼서 다시 합을 구한다. Java 문제풀이 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 3..
[JPA] JPA N+1 문제 및 해결방안 [N+1 문제란?] 연관관계에서 발생하는 이슈로 연관관계가 설정된 엔티티를 조회할 경우에 조회된 데이터 갯수(N)만큼 연관관계의 조회 쿼리가 추가로 발생하며 데이터를 읽어오게 된다. 이를 N+1 문제라고 한다. [N+1 문제를 확인하기 위한 관계 코드] 멤버와 팀의 관계로 팀은 여러명의 멤버로 구성될 수 있다. 멤버는 하나의 팀에 속해있다. Member.class 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 package practice.practiceproject.domain; import javax.persistence.Entity; import java..
Distpatcher Servlet(디스패처 서블릿) 개념과 동작과정 [Dispatcher Servlet(대스패처 서블릿) 이란?] Dispatcher Servlet에서 Dispatch의 의미는 보내다, 급파하다 등의 의미를 갖고 있다. 이를 해석해보면 Dispatcher Servlet이 받은 요청을 어딘가로 빨리 보내는 Servlet이라고 할 수 있다. 모든 요청을 가장 먼저 받아 적합한 컨트롤러에 위임해주는 프론트 컨트롤러(Front Controller) 라고 정의할 수 있다. Spring 이전에... 서블릿 컨테이너가 매핑할 서블릿을 확인하기 위해서 web.xml을 읽어서 매핑을 해준다. 접속을 하려는 경로는 여러개이며 서블릿 객체 하나는 하나의 경로만 담당하기에 매번 web.xml에 등록해주어야 하는 번거로움이 있었다. 프로세스의 요청마다 객체가 생성되는 문제점이 ..
[프로그래머스 64055] Level2 튜플 문제 URL https://school.programmers.co.kr/learn/courses/30/lessons/64065 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제풀이 Key Point 튜플이 원소 집합은 {a1}, {a1, a2}, {a1, a2, a3}, ... {a1, a2, ...., an}으로 n까지 하나씩 원소를 증가시키면서 집합을 만든다. 즉, an이 포함되는 집합까지 만들면 튜플의 가장 앞의 숫자인 a1은 n번 등장하게 되는 것이다. 문제풀이 Java 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ..
[프로그래머스 12909] Level2 올바른 괄호 문제 Link https://school.programmers.co.kr/learn/courses/30/lessons/12909 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제풀이 Key Point 문자열을 확인하는 중에 닫는 괄호를 가리키게 되었을 때 이전에 여는 괄호가 있어야만 올바른 괄호라고 할 수 있다. 문자열 확인이 끝났을 때 닫는 괄호와 짝을 이루지 못한 여는 괄호가 남아 있다면 올바른 괄호라고 할 수 없다. 문제풀이 Java 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 2..
[프로그래머스 12941] Level2 최솟값 만들기 문제 Link https://school.programmers.co.kr/learn/courses/30/lessons/12941 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제풀이 Key Point 가장 작은 값과 가장 큰 값을 곱한 결과들을 더해나가야 최소합을 구할 수 있다. 효율성을 고려하기 위한 고민이 필요하다. (아래에 설명되어 있음) 정확성은 통과 했으나 효율성에서 시간초과 발생 아래 코드가 효율성에서 시간초과가 난 이유 가장 작은 값과 가장 큰 값을 곱해 나가기 위해 A배열은 오름차순, B배열은 내림차순으로 정렬해 나가려고 했다. Colle..
[프로그래머스 70129] Level2 이진 변환 반복하기 문제 Link https://school.programmers.co.kr/learn/courses/30/lessons/70129 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제풀이 Key Point 2진수 변환하기 0을 제거하면서 카운팅 하기 변환할 숫자가 1이 될때까지 위 작업 반복하기 Java 문제풀이 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 5..