단축키 [Mac] cmd + option + p [Win] ctrl + alt + p 예시 메서드 가정 address 변수를 파라미터로 꺼내기 파라미터 이름 설정 후 enter
All Categories
사전 필요 작업 : 프로젝트 생성 시 lombok 라이브러리를 추가 @NoArgsConstructor : 기본생성자를 자동으로 생성 @NoArgsConstructor public class OrderItem{ //public OrderItem(){}파라미터가 없는 기본생성자를 자동으로 생성해줌 } @NoArgsConstructor(access) : 접근지정자 설정 가능 @NoArgsConstructor(access = AcessLevel.PUBLIC) / default @NoArgsConstructor(access = AccessLevel.PUBLIC) public class OrderItem{ //public OrderItem(){} } @NoArgsConstructor(access = AcessLev..
사전 필요 작업 : 프로젝트 생성 시 lombok 라이브러리를 추가 생성자 주입 관련 annotation 정리 @AllArgsConstructor : 모든 필드에 대해 생성자 주입 자동 생성@AllArgsConstructorpublic class MemberService{ private MemberRepository memberRepository; // @AllArgsConstructor : 아래의 생성자 주입 코드를 자동으로 생성해 줌// public MemberService(MemberRepository memberRepository){// this.memberRepository = memberRepository;// } } @RequiredArgsConstructo..
문제) N가지 화폐 종류가 주어진다. 이 화폐들을 사용해서 M원을 만들어야 한다. 이 때 최소한의 화폐 개수를 사용해서 M원을 만들어야 하며 화폐 구성은 같지만 순서가 다른 경우에는 같은 경우로 구분한다. 입력조건) 첫째 줄에 N, M이 주어진다. (1
문제) 가로의 길이가 N, 세로의 길이가 2인 직사각형 형태의 바닥을 타일로 모두 채워야 한다. 이 때 타일의 종류는 3가지 존재한다. 1 x 2 직사각형 타일 2 x 1 직사각형 타일 2 x 2 정사각형 타일 이 때 바닥을 채우는 모든 경우의 수를 구하는 프로그램을 작성하시오. 입력조건) 첫째 줄에 N이 주어진다. (1 2 x 1 타일로 덮는 경우 1가지 i-2까지 타일이 채워져 있는 경우 => 가로로 두칸을 채우면 된다. => 1 x 2 타일로 덮는 경우 + 2 x 2 타일로 덮는 경우, 즉 2가지 따라서 결과 리스트의 현재 인덱스 i 에는 결과 리스트[i-1] + 결과 리스트[i-2] * 2 를 저장하고 결과 리스트의 N번째 인덱스에 해당하는 값을 출력하면 원하는 출력 결과를 얻을 수 있을 것이다.
문제) N개의 식량 창고에 대한 정보를 입력받는다. 이 때 입력받은 순서대로 식량 창고가 인접해 있다고 생각한다. 개미 전사는 일직선 상에 존재하는 식량 창고 중에서 서로 인접하지 않은, 즉 최소한 한 칸 이상 떨어진 식량 창고들을 약탈할 수 있다. 이 때 개미 전사가 얻을 수 있는 식량의 최댓값을 출력하시오. 입력조건) 첫째 줄에 식량창고의 개수 N이 주어진다. (3 결과 리스트[i-2] + 입력 리스트[i] 위의 두 가지 경우의 최댓값을 결과 리스트의 현재 리스트에 저장하면서 결과 리스트를 채워 나가면 문제를 해결할 수 있다. 최종적으로 입력받은 N 번째 인덱스의 값이 원하는 문제의 답이 된다.
문제) 정수 X가 주어질 때, 다음 4가지 연산을 통해서 X를 1로 만들어야 한다. X가 5로 나누어떨어지면, 5로 나눈다. X가 3으로 나누어떨어지면, 3으로 나눈다. X가 2로 나누어떨어지면, 2로 나눈다. X에서 1을 뺀다. 이때, 주어진 연산을 통해서 X를 1로 만드는 가장 최소 연산 횟수를 출력하시오. 입력조건) 첫째 줄에 정수 X가 주어진다. (1
코딩테스트에서는 각 문제 당 메모리와 시간이 제한되어 있다. 비교적 적은 입력이나 짧은 알고리즘에서는 이러한 제한이 큰 장애가 되지는 않는다. 그러나 입력이 많은 문제 (예를 들어 10억개의 입력 등) 거나 재귀적인 알고리즘에서는 메모리 혹은 시간 제한에 걸리게 된다. 따라서 우리는 최대한 연산 속도와 메모리 공간을 효율적으로 활용하는 알고리즘을 구현해야 한다. 몇몇 문제에서는 메모리 공간을 조금 더 사용할 수록 비약적으로 연산속도를 줄일 수 있는 경우가 존재한다. 이는 뒤에서 설명할 다이나믹 프로그래밍 기법을 사용하는 경우이다. 다이나믹 프로그래밍이란 동적 계획법이라고도 표현하며 2가지 방식이 존재한다. 이는 아래와 같다. 탑다운 방식 바텀업 방식 먼저 다이나믹 프로그래밍의 기본적인 아이디어는 다음과 ..