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..
https://www.acmicpc.net/problem/2004 2004번: 조합 0의 개수 첫째 줄에 정수 $n$, $m$ ($0 \le m \le n \le 2,000,000,000$, $n \ne 0$)이 들어온다. www.acmicpc.net 백준 2004번 조합 0의 개수 문제 링크입니다. 핵심 2와 5개가 짝을 이루어 곱해질 때마다 끝자리에 0이 1개 추가된다. 2와 5의 개수가 다르게 나올 수 있기 때문에, 둘 중 적게 나온 수만큼 0이 추가된다. 정답 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; publ..
https://www.acmicpc.net/problem/15650 15650번: N과 M (2) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 백준 15650번 N과 M(2) 문제 링크입니다. 핵심 https://kimtaesoo99.tistory.com/17 [백준]15649번 N과 M(1) (java) https://www.acmicpc.net/problem/15649 15649번: N과 M (1) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해..
https://www.acmicpc.net/problem/15649 15649번: N과 M (1) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 백준 15649번 N과 M(1) 문제 링크입니다. 핵심 이 문제는 백트래킹을 사용하여서 풀어야 한다. 재귀 호출을 통해 푸는 방식이다. https://namu.wiki/w/%EB%B0%B1%ED%8A%B8%EB%9E%98%ED%82%B9 백트래킹 - 나무위키 일반적으로 특정 퀘스트나 스토리를 클리어하기 위해 게임을 진행한 뒤, 자동으로 초기 지점으로 돌아오는 기능 등이 없어 왔던 길을 플레이어가..
https://www.acmicpc.net/problem/1002 1002번: 터렛 각 테스트 케이스마다 류재명이 있을 수 있는 위치의 수를 출력한다. 만약 류재명이 있을 수 있는 위치의 개수가 무한대일 경우에는 -1을 출력한다. www.acmicpc.net 백준 1002번 터렛 문제 링크입니다. 핵심 이 문제는 해석하면, 두 원의 접점의 개수를 찾는 것이다. 가장 먼저 개수가 무한대일 경우는 두 원의 중심이 같고, 반지름이 같은 경우이다. 그다음 접점이 없는 경우인데, 이는 아래와 같은 그림일 때이다. 이는 다른 원이 내부에 있을 때인데, 식으로 나타내면 (x1-x2)^2+(y1-y2)^2(r1-r2)^2이다. 다음은 접점이 한 개일 때이다. 내접한다는 의미이고, 식은 (x1-x2)^2+(y1-y2)^..
https://www.acmicpc.net/problem/2477 2477번: 참외밭 첫 번째 줄에 1m2의 넓이에 자라는 참외의 개수를 나타내는 양의 정수 K (1 ≤ K ≤ 20)가 주어진다. 참외밭을 나타내는 육각형의 임의의 한 꼭짓점에서 출발하여 반시계방향으로 둘레를 돌면서 지 www.acmicpc.net 백준 2477번 참외밭 문제 링크입니다. 핵심 반드시 육각형이고, 시계 반대방향으로 돌아간다. 우리는 가장 큰 가로변과 세로 변을 구하여 가장 바깥쪽의 직사각형을 구하고 그 직사각형에서 작은 직사각형이 잘린 크기를 구할 것이다. 정답 코드 import java.util.Scanner; public class Main { public static void main(String[] args){ Sc..
https://www.acmicpc.net/problem/2981 2981번: 검문 트럭을 타고 이동하던 상근이는 경찰의 검문을 받게 되었다. 경찰은 상근이가 운반하던 화물을 하나하나 모두 확인할 것이기 때문에, 검문하는데 엄청나게 오랜 시간이 걸린다. 상근이는 시간 www.acmicpc.net 백준 2981번 검문 문제 링크입니다. 핵심 여러 수를 받고 그 수들을 나누었을 때, 나머지가 같은 값이 나오게 하는 수를 찾는 것이다. 단순한 방법으로는 2부터 1씩 증가시키면서 값을 나누었을 때, 나머지를 비교하는 것이지만, 이러한 방법은 시간 초과가 뜨게 된다. 따라서 우리는 유클리드 호제법을 사용하여 문제를 풀어야 한다. https://ko.wikipedia.org/wiki/%EC%9C%A0%ED%81%B..
https://www.acmicpc.net/problem/10816 10816번: 숫자 카드 2 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10, www.acmicpc.net 백준 10816번 숫자 카드 2 문제 링크입니다. 핵심 이 문제는 처음 제시된 숫자 중에서 아래 제시된 숫자가 몇 번 나왔는지를 체크하는 것이다. 핵심은 HashMap을 사용하는 것이다. 정답 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; ..