https://www.acmicpc.net/problem/2579 2579번: 계단 오르기 계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. 과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점 www.acmicpc.net 백준 2579번 계단 오르기 문제 링크입니다. 핵심 계단을 1칸, 2칸 이동 가능하다. 마지막 계단은 반드시 밟아야 한다. 3개 연속으로 계단은 올라갈 수 없다. 가장 중요한 것이 3개의 계단을 연속으로 올라갈 수 없다는 것이다. 정답 코드 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner ..
https://www.acmicpc.net/problem/1912 1912번: 연속합 첫째 줄에 정수 n(1 ≤ n ≤ 100,000)이 주어지고 둘째 줄에는 n개의 정수로 이루어진 수열이 주어진다. 수는 -1,000보다 크거나 같고, 1,000보다 작거나 같은 정수이다. www.acmicpc.net 백준 1912번 연속합 문제 링크입니다. 핵심 연속된 수의 합이 가장 큰 값을 찾는 것이다. 이전까지 탐색했던 값과 새로운 값을 비교해나가면 쉽게 풀 수 있다. 정답 코드 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int N = i..
https://www.acmicpc.net/problem/9184 9184번: 신나는 함수 실행 입력은 세 정수 a, b, c로 이루어져 있으며, 한 줄에 하나씩 주어진다. 입력의 마지막은 -1 -1 -1로 나타내며, 세 정수가 모두 -1인 경우는 입력의 마지막을 제외하면 없다. www.acmicpc.net 백준 9184번 신나는 함수 실행 문제 링크입니다. 핵심 동적 계획법을 사용하는 것인데, 재귀와 메모이제이션을 사용한다. 정답 코드 import java.util.Scanner; public class Main{ public static int[][][] arr = new int[21][21][21]; public static void main(String[] args) { Scanner sc = n..
https://www.acmicpc.net/problem/2164 2164번: 카드2 N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가 www.acmicpc.net 백준 2164번 카드 2 문제 링크입니다. 핵심 큐를 사용하면 쉽게 풀 수 있는 문제이다. 가장 먼저 넣은 수를 제거하고, 그 뒤의 수를 맨뒤로 보낸다. 카드가 1개 남았을 때까지 반복한다. 정답 코드 import java.util.LinkedList; import java.util.Queue; import java.util.Scanner; public class Main { public stat..
Response을 커스텀하는 이유 -> 기존에 쓰던 ResponeEntity클래스를 통해 리턴해주면 형식을 수정할 수 없음 예외처리 하기 Advice : Exception을 관리하는 중앙관리소 Exception : 예외처리를 위해 우리가 커스텀으로 만드는 Exception 예외처리를 하는 이유 -> 명확한 오류의 이유를 알려주기 위함 패키지 entity - 클래스 Board package com.example.mentoring.entity; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import javax.persistence.Entity; import javax.persistence.Gene..
https://www.acmicpc.net/problem/9663 9663번: N-Queen N-Queen 문제는 크기가 N × N인 체스판 위에 퀸 N개를 서로 공격할 수 없게 놓는 문제이다. N이 주어졌을 때, 퀸을 놓는 방법의 수를 구하는 프로그램을 작성하시오. www.acmicpc.net 백준 9663번 N-Queen 문제 링크입니다. 핵심 N*N크기의 체스판에 N개의 퀸을 놓는다. 퀸은 일직선, 대각선으로 쭉 움직일 수 있다. 즉 각각의 퀸이 일직선과 대각선에 위치하면 안 된다. 1차원 배열을 사용하여, 각 배열의 index를 열, 값을 행으로 본다. 정답 코드 import java.util.Scanner; public class Main { public static int[] arr; publ..
https://www.acmicpc.net/problem/14888 14888번: 연산자 끼워넣기 첫째 줄에 수의 개수 N(2 ≤ N ≤ 11)가 주어진다. 둘째 줄에는 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 100) 셋째 줄에는 합이 N-1인 4개의 정수가 주어지는데, 차례대로 덧셈(+)의 개수, 뺄셈(-)의 개수, www.acmicpc.net 백준 14888번 연산자 끼워넣기 문제 링크입니다. 핵심 N개의 수를 받고, N-1개의 연산자를 받는다. 모든 경우의 수를 찾아야 한다. 즉 백트래킹을 통해 모든 경우의 수를 확인하는 재귀 호출 문제이다. 정답 코드 import java.util.Scanner; public class Main { public static int max=Int..
https://www.acmicpc.net/problem/11729 11729번: 하노이 탑 이동 순서 세 개의 장대가 있고 첫 번째 장대에는 반경이 서로 다른 n개의 원판이 쌓여 있다. 각 원판은 반경이 큰 순서대로 쌓여있다. 이제 수도승들이 다음 규칙에 따라 첫 번째 장대에서 세 번째 장대로 www.acmicpc.net 백준 11729번 하노이 탑 이동 순서 문제 링크입니다. 핵심 첫 번째 칸에 있는 원판을 마지막 칸으로 옮기는 것인데, 작은 원판 위에 큰 원판이 올라갈 수 없고, 한 번에 1개씩 옮길 수 있다. 재귀 호출을 통해 해결할 수 있다. 정답 코드 package main; import java.io.*; public class Main { public static StringBuilder ..
https://www.acmicpc.net/problem/10828 10828번: 스택 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 백준 10828번 스택 문제 링크입니다. 핵심 매우 쉬운 문제이다. 스택에 관련된 문제를 입력하면, 그에 해당하는 스택의 메서드를 실행하면 된다. push의 경우에는 숫자를 한번 더 받는다. 정답 코드 import java.util.*; public class Main { public static void main(String[] args){ Scanner sc = new Sca..
https://www.acmicpc.net/problem/1620 1620번: 나는야 포켓몬 마스터 이다솜 첫째 줄에는 도감에 수록되어 있는 포켓몬의 개수 N이랑 내가 맞춰야 하는 문제의 개수 M이 주어져. N과 M은 1보다 크거나 같고, 100,000보다 작거나 같은 자연수인데, 자연수가 뭔지는 알지? 모르면 www.acmicpc.net 백준 1620번 나는야 포켓몬 마스터 이다솜 문제 링크입니다. 핵심 이 문제는 순서대로 들어온 포켓몬의 이름을 순서대로 도감에 저장한다. 그리고 숫자를 입력하면 그 숫자에 해당하는 포켓몬 이름이 나오고, 이름을 입력하면 그 포켓몬의 순서가 나와야 한다. 따라서 HashMap을 사용하는 것이 적절하다. 정답 코드 import java.io.BufferedReader; i..