2581번: 소수 (acmicpc.net) 2581번: 소수 M이상 N이하의 자연수 중 소수인 것을 모두 찾아 첫째 줄에 그 합을, 둘째 줄에 그 중 최솟값을 출력한다. 단, M이상 N이하의 자연수 중 소수가 없을 경우는 첫째 줄에 -1을 출력한다. www.acmicpc.net M 이상 N 이하인 소수들의 합과 최솟값을 구하는 문제이다. 소수는 2부터 그 수의 -1 범위의 수는 약수가 될 수없다는 특징을 가지고 메서드를 만들어 해결하였다. 주의할 점은 M이 1인 경우 예외처리를 해줘야 한다. 코드를 보면 쉽게 이해가 갈 것이다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public..
1292번: 쉽게 푸는 문제 (acmicpc.net) 1292번: 쉽게 푸는 문제 첫째 줄에 구간의 시작과 끝을 나타내는 정수 A, B(1 ≤ A ≤ B ≤ 1,000)가 주어진다. 즉, 수열에서 A번째 숫자부터 B번째 숫자까지 합을 구하면 된다. www.acmicpc.net 이번 문제는 범위가 1000 까지 제한되어 있으므로, 먼저 수열을 1000 까지 구한 뒤 풀면 쉽게 해결할 수 있는 문제였다. 코드를 보면 더 쉽게 이해갈 것이다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { publ..
1978번: 소수 찾기 (acmicpc.net) 1978번: 소수 찾기 첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다. www.acmicpc.net 소수 N은 2부터 N-1 범위까지의 수로 나눴을 때 0이 될 수 없다는 사실을 토대로 코딩하였다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws IOException { BufferedRe..
2609번: 최대공약수와 최소공배수 (acmicpc.net) 2609번: 최대공약수와 최소공배수 첫째 줄에는 입력으로 주어진 두 수의 최대공약수를, 둘째 줄에는 입력으로 주어진 두 수의 최소 공배수를 출력한다. www.acmicpc.net 두 수 n1 과 n2(n1=1; i--) { if (n1 % i == 0 && n2 % i == 0) { gcd = i; break; } } sb.append(gcd).append("\n").append(n1 * n2 / gcd); System.out.println(sb); } }
2309번: 일곱 난쟁이 (acmicpc.net) 2309번: 일곱 난쟁이 아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다. www.acmicpc.net 이 문제에서는 난쟁이 10명의 키가 주어진다. 그 중 합이 100이 되는 난쟁이들을 출력하는 문제이다. 이 문제의 해결을 위해 먼저, 난쟁이 10명의 키를 모두 더한 뒤 2명의 키를 순차적으로 빼 100을 구하는 방식으로 해결하였다. 코드는 다음과 같다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; i..
https://www.acmicpc.net/problem/1600 1600번: 말이 되고픈 원숭이 첫째 줄에 정수 K가 주어진다. 둘째 줄에 격자판의 가로길이 W, 세로길이 H가 주어진다. 그 다음 H줄에 걸쳐 W개의 숫자가 주어지는데, 0은 아무것도 없는 평지, 1은 장애물을 뜻한다. 장애물이 있 www.acmicpc.net 이번 문제는 최적의 경로를 탐색하는 문제이므로 BFS를 사용하면 쉽게 해결할 수 있다. 먼저, 원숭이가 움직일 수 있는 방향을 살펴보면 다음과 같다. 상, 하, 좌, 우 체스의 나이트와 같은 8가지 방향 이를 좌표로 표현하면 다음과 같다. {1, 0, -1, 0}; {0, 1, 0, -1}; {-1, -2, -2, -1, 1, 2, 2, 1}; {-2, -1, 1, 2, -2, -..
https://www.acmicpc.net/problem/10971 10971번: 외판원 순회 2 첫째 줄에 도시의 수 N이 주어진다. (2 ≤ N ≤ 10) 다음 N개의 줄에는 비용 행렬이 주어진다. 각 행렬의 성분은 1,000,000 이하의 양의 정수이며, 갈 수 없는 경우는 0이 주어진다. W[i][j]는 도시 i에서 j www.acmicpc.net 이번 문제는 모든 경우의 수를 탐색하고 가장 적은 비용을 구해야하는 문제이기 때문에 DFS 기법을 사용하였다. 주의할 점은 N개의 도시를 거쳐 다시 원래의 출발 도시로 돌아와야한다는 것이다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader..
https://www.acmicpc.net/problem/2331 2331번: 반복수열 첫째 줄에 반복되는 부분을 제외했을 때, 수열에 남게 되는 수들의 개수를 출력한다. www.acmicpc.net 이번 문제의 수열 D에는 [각 자리의 숫자를 P번 곱한 수] 를 순차적으로 구하다보면 반드시 반복되는 부분이 나온다는 것이 핵심이다. 내가 구상한 해결법은 자료구조 ArrayList를 선택해 해결하는 방법이다. ArrayList ARR_LIST를 선언하고 DFS 기법을 활용해 ARR_LIST에 [각 자리의 숫자를 P번 곱한 수] 를 계속해서 저장하고, 중복되는 수가 나왔을 때 ARR_LIST에 그 수가 위치한 INDEX값을 출력한다. 코드를 보면 이해가 금방 될 것이다. import java.io.Buffe..