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..
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws IOException { StringBuilder sb = new StringBuilder(); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st; int[] arr = new int[10]; int T =..
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/7576 7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토 www.acmicpc.net 모든 토마토가 익은 최소 일수를 구하는 문제이므로 BFS 기법을 활용하여 풀 수 있다. 범위 안에 있는 토마투 중 익지 않은 토마토(0) 일 경우 큐에 포함시키고 그 좌표값에 해당하는 배열값을 그 전 값에서 1 증가시키는 식으로 최대 날짜를 구해준다. 문제에서 요구하는 조건이 많아 까다로웠지만 코드를 보면 금방 이해할 수 있을 것이다. import java.io.BufferedRe..
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, -..