두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.
16 | 17 | ### 입력 18 | 19 |첫째 줄에 A와 B가 주어진다. (0 < A, B < 10)
20 | 21 | ### 출력 22 | 23 |첫째 줄에 A+B를 출력한다.
24 | 25 | -------------------------------------------------------------------------------- /백준/Bronze/1008. A/B/A/B.java: -------------------------------------------------------------------------------- 1 | import java.util.Scanner; 2 | 3 | public class Main { 4 | public static void main(String[] args) { 5 | Scanner sc = new Scanner(System.in); 6 | String[] s = sc.nextLine().split(" "); 7 | double result = (double)Integer.parseInt(s[0]) / (double)Integer.parseInt(s[1]); 8 | System.out.println(result); 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /백준/Bronze/1008. A/B/README.md: -------------------------------------------------------------------------------- 1 | # [Bronze V] A/B - 1008 2 | 3 | [문제 링크](https://www.acmicpc.net/problem/1008) 4 | 5 | ### 성능 요약 6 | 7 | 메모리: 14476 KB, 시간: 116 ms 8 | 9 | ### 분류 10 | 11 | 구현, 사칙연산, 수학 12 | 13 | ### 문제 설명 14 | 15 |두 정수 A와 B를 입력받은 다음, A/B를 출력하는 프로그램을 작성하시오.
16 | 17 | ### 입력 18 | 19 |첫째 줄에 A와 B가 주어진다. (0 < A, B < 10)
20 | 21 | ### 출력 22 | 23 |첫째 줄에 A/B를 출력한다. 실제 정답과 출력값의 절대오차 또는 상대오차가 10-9 이하이면 정답이다.
24 | 25 | -------------------------------------------------------------------------------- /백준/Bronze/10101. 삼각형 외우기/README.md: -------------------------------------------------------------------------------- 1 | # [Bronze IV] 삼각형 외우기 - 10101 2 | 3 | [문제 링크](https://www.acmicpc.net/problem/10101) 4 | 5 | ### 성능 요약 6 | 7 | 메모리: 11544 KB, 시간: 80 ms 8 | 9 | ### 분류 10 | 11 | 기하학, 구현 12 | 13 | ### 문제 설명 14 | 15 |창영이는 삼각형의 종류를 잘 구분하지 못한다. 따라서 프로그램을 이용해 이를 외우려고 한다.
16 | 17 |삼각형의 세 각을 입력받은 다음,
18 | 19 |를 출력하는 프로그램을 작성하시오.
27 | 28 | ### 입력 29 | 30 |총 3개의 줄에 걸쳐 삼각형의 각의 크기가 주어진다. 모든 정수는 0보다 크고, 180보다 작다.
31 | 32 | ### 출력 33 | 34 |문제의 설명에 따라 Equilateral, Isosceles, Scalene, Error 중 하나를 출력한다.
35 | 36 | -------------------------------------------------------------------------------- /백준/Bronze/1037. 약수/README.md: -------------------------------------------------------------------------------- 1 | # [Bronze I] 약수 - 1037 2 | 3 | [문제 링크](https://www.acmicpc.net/problem/1037) 4 | 5 | ### 성능 요약 6 | 7 | 메모리: 11672 KB, 시간: 80 ms 8 | 9 | ### 분류 10 | 11 | 수학, 정수론 12 | 13 | ### 문제 설명 14 | 15 |양수 A가 N의 진짜 약수가 되려면, N이 A의 배수이고, A가 1과 N이 아니어야 한다. 어떤 수 N의 진짜 약수가 모두 주어질 때, N을 구하는 프로그램을 작성하시오.
16 | 17 | ### 입력 18 | 19 |첫째 줄에 N의 진짜 약수의 개수가 주어진다. 이 개수는 50보다 작거나 같은 자연수이다. 둘째 줄에는 N의 진짜 약수가 주어진다. 1,000,000보다 작거나 같고, 2보다 크거나 같은 자연수이고, 중복되지 않는다.
20 | 21 | ### 출력 22 | 23 |첫째 줄에 N을 출력한다. N은 항상 32비트 부호있는 정수로 표현할 수 있다.
24 | 25 | -------------------------------------------------------------------------------- /백준/Bronze/10807. 개수 세기/README.md: -------------------------------------------------------------------------------- 1 | # [Bronze V] 개수 세기 - 10807 2 | 3 | [문제 링크](https://www.acmicpc.net/problem/10807) 4 | 5 | ### 성능 요약 6 | 7 | 메모리: 11776 KB, 시간: 80 ms 8 | 9 | ### 분류 10 | 11 | 구현 12 | 13 | ### 문제 설명 14 | 15 |총 N개의 정수가 주어졌을 때, 정수 v가 몇 개인지 구하는 프로그램을 작성하시오.
16 | 17 | ### 입력 18 | 19 |첫째 줄에 정수의 개수 N(1 ≤ N ≤ 100)이 주어진다. 둘째 줄에는 정수가 공백으로 구분되어져있다. 셋째 줄에는 찾으려고 하는 정수 v가 주어진다. 입력으로 주어지는 정수와 v는 -100보다 크거나 같으며, 100보다 작거나 같다.
20 | 21 | ### 출력 22 | 23 |첫째 줄에 입력으로 주어진 N개의 정수 중에 v가 몇 개인지 출력한다.
24 | 25 | -------------------------------------------------------------------------------- /백준/Bronze/10807. 개수 세기/개수 세기.java: -------------------------------------------------------------------------------- 1 | import java.io.*; 2 | import java.util.*; 3 | 4 | public class Main { 5 | private static BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); 6 | 7 | public static void main(String[] args) throws IOException { 8 | int N = Integer.parseInt(bufferedReader.readLine()); // 입력 받을 수의 개수 9 | 10 | StringTokenizer numbers = new StringTokenizer(bufferedReader.readLine()); // 입력받은 수들 11 | Map알파벳 소문자로만 이루어진 단어 S가 주어진다. 각각의 알파벳에 대해서, 단어에 포함되어 있는 경우에는 처음 등장하는 위치를, 포함되어 있지 않은 경우에는 -1을 출력하는 프로그램을 작성하시오.
16 | 17 | ### 입력 18 | 19 |첫째 줄에 단어 S가 주어진다. 단어의 길이는 100을 넘지 않으며, 알파벳 소문자로만 이루어져 있다.
20 | 21 | ### 출력 22 | 23 |각각의 알파벳에 대해서, a가 처음 등장하는 위치, b가 처음 등장하는 위치, ... z가 처음 등장하는 위치를 공백으로 구분해서 출력한다.
24 | 25 |만약, 어떤 알파벳이 단어에 포함되어 있지 않다면 -1을 출력한다. 단어의 첫 번째 글자는 0번째 위치이고, 두 번째 글자는 1번째 위치이다.
26 | 27 | -------------------------------------------------------------------------------- /백준/Bronze/10809. 알파벳 찾기/알파벳 찾기.java: -------------------------------------------------------------------------------- 1 | import java.io.*; 2 | 3 | public class Main { 4 | private static BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); 5 | private static BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(System.out)); 6 | 7 | public static void main(String[] args) throws IOException { 8 | String S = bufferedReader.readLine(); 9 | for (int i = 97; i <= 122; i++) { 10 | bufferedWriter.write(S.indexOf(i) + " "); 11 | } 12 | bufferedWriter.close(); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /백준/Bronze/1085. 직사각형에서 탈출/README.md: -------------------------------------------------------------------------------- 1 | # [Bronze III] 직사각형에서 탈출 - 1085 2 | 3 | [문제 링크](https://www.acmicpc.net/problem/1085) 4 | 5 | ### 성능 요약 6 | 7 | 메모리: 11512 KB, 시간: 76 ms 8 | 9 | ### 분류 10 | 11 | 기하학, 수학 12 | 13 | ### 문제 설명 14 | 15 |한수는 지금 (x, y)에 있다. 직사각형은 각 변이 좌표축에 평행하고, 왼쪽 아래 꼭짓점은 (0, 0), 오른쪽 위 꼭짓점은 (w, h)에 있다. 직사각형의 경계선까지 가는 거리의 최솟값을 구하는 프로그램을 작성하시오.
16 | 17 | ### 입력 18 | 19 |첫째 줄에 x, y, w, h가 주어진다.
20 | 21 | ### 출력 22 | 23 |첫째 줄에 문제의 정답을 출력한다.
24 | 25 | -------------------------------------------------------------------------------- /백준/Bronze/1085. 직사각형에서 탈출/직사각형에서 탈출.java: -------------------------------------------------------------------------------- 1 | import java.io.BufferedReader; 2 | import java.io.IOException; 3 | import java.io.InputStreamReader; 4 | import java.util.Arrays; 5 | import java.util.StringTokenizer; 6 | 7 | public class Main { 8 | private static BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); 9 | 10 | public static void main(String[] args) throws IOException { 11 | StringTokenizer st = new StringTokenizer(bufferedReader.readLine()); 12 | int x = Integer.parseInt(st.nextToken()); 13 | int y = Integer.parseInt(st.nextToken()); 14 | int w = Integer.parseInt(st.nextToken()); 15 | int h = Integer.parseInt(st.nextToken()); 16 | int[] length = {x, y, w - x, h - y}; 17 | Arrays.sort(length); 18 | System.out.println(length[0]); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /백준/Bronze/10870. 피보나치 수 5/README.md: -------------------------------------------------------------------------------- 1 | # [Bronze V] 피보나치 수 5 - 10870 2 | 3 | [문제 링크](https://www.acmicpc.net/problem/10870) 4 | 5 | ### 성능 요약 6 | 7 | 메모리: 14244 KB, 시간: 104 ms 8 | 9 | ### 분류 10 | 11 | 구현(implementation), 수학(math), 재귀(recursion) 12 | 13 | ### 문제 설명 14 | 15 |피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다.
16 | 17 |이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가 된다.
18 | 19 |n=17일때 까지 피보나치 수를 써보면 다음과 같다.
20 | 21 |0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597
22 | 23 |n이 주어졌을 때, n번째 피보나치 수를 구하는 프로그램을 작성하시오.
24 | 25 | ### 입력 26 | 27 |첫째 줄에 n이 주어진다. n은 20보다 작거나 같은 자연수 또는 0이다.
28 | 29 | ### 출력 30 | 31 |첫째 줄에 n번째 피보나치 수를 출력한다.
32 | 33 | -------------------------------------------------------------------------------- /백준/Bronze/10870. 피보나치 수 5/피보나치 수 5.java: -------------------------------------------------------------------------------- 1 | import java.util.Scanner; 2 | 3 | public class Main { 4 | 5 | public static int fibonacci (int num) { 6 | if (num == 0) { 7 | return 0; 8 | } else if (num == 1) { 9 | return 1; 10 | } else { 11 | return fibonacci(num - 1) + fibonacci(num -2); 12 | } 13 | } 14 | public static void main(String[] args) { 15 | Scanner sc = new Scanner(System.in); 16 | int num = sc.nextInt(); 17 | System.out.println(fibonacci(num)); 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /백준/Bronze/10871. X보다 작은 수/README.md: -------------------------------------------------------------------------------- 1 | # [Bronze V] X보다 작은 수 - 10871 2 | 3 | [문제 링크](https://www.acmicpc.net/problem/10871) 4 | 5 | ### 성능 요약 6 | 7 | 메모리: 18036 KB, 시간: 316 ms 8 | 9 | ### 분류 10 | 11 | 구현(implementation) 12 | 13 | ### 문제 설명 14 | 15 |정수 N개로 이루어진 수열 A와 정수 X가 주어진다. 이때, A에서 X보다 작은 수를 모두 출력하는 프로그램을 작성하시오.
16 | 17 | ### 입력 18 | 19 |첫째 줄에 N과 X가 주어진다. (1 ≤ N, X ≤ 10,000)
20 | 21 |둘째 줄에 수열 A를 이루는 정수 N개가 주어진다. 주어지는 정수는 모두 1보다 크거나 같고, 10,000보다 작거나 같은 정수이다.
22 | 23 | ### 출력 24 | 25 |X보다 작은 수를 입력받은 순서대로 공백으로 구분해 출력한다. X보다 작은 수는 적어도 하나 존재한다.
26 | 27 | -------------------------------------------------------------------------------- /백준/Bronze/10871. X보다 작은 수/X보다 작은 수.kt: -------------------------------------------------------------------------------- 1 | import java.io.BufferedReader 2 | import java.io.InputStreamReader 3 | 4 | fun main() = with(BufferedReader(InputStreamReader(System.`in`))) { 5 | val X: Int = readLine().split(" ")[1].toInt() 6 | val A: List알파벳 소문자로만 이루어진 단어가 주어진다. 이때, 이 단어가 팰린드롬인지 아닌지 확인하는 프로그램을 작성하시오.
16 | 17 |팰린드롬이란 앞으로 읽을 때와 거꾸로 읽을 때 똑같은 단어를 말한다.
18 | 19 |level, noon은 팰린드롬이고, baekjoon, online, judge는 팰린드롬이 아니다.
20 | 21 | ### 입력 22 | 23 |첫째 줄에 단어가 주어진다. 단어의 길이는 1보다 크거나 같고, 100보다 작거나 같으며, 알파벳 소문자로만 이루어져 있다.
24 | 25 | ### 출력 26 | 27 |첫째 줄에 팰린드롬이면 1, 아니면 0을 출력한다.
28 | 29 | -------------------------------------------------------------------------------- /백준/Bronze/10988. 팰린드롬인지 확인하기/팰린드롬인지 확인하기.java: -------------------------------------------------------------------------------- 1 | import java.io.BufferedReader; 2 | import java.io.IOException; 3 | import java.io.InputStreamReader; 4 | 5 | public class Main { 6 | private static BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); 7 | 8 | public static void main(String[] args) throws IOException { 9 | char[] word = bufferedReader.readLine().toCharArray(); 10 | 11 | int result = 1; 12 | for (int i = 0; i < word.length; i++) { 13 | if (word[i] != word[word.length - i - 1]) { 14 | result = 0; 15 | break; 16 | } 17 | } 18 | 19 | System.out.println(result); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /백준/Bronze/10989. 수 정렬하기 3/README.md: -------------------------------------------------------------------------------- 1 | # [Bronze I] 수 정렬하기 3 - 10989 2 | 3 | [문제 링크](https://www.acmicpc.net/problem/10989) 4 | 5 | ### 성능 요약 6 | 7 | 메모리: 509508 KB, 시간: 2640 ms 8 | 9 | ### 분류 10 | 11 | 정렬(sorting) 12 | 13 | ### 문제 설명 14 | 15 |N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오.
16 | 17 | ### 입력 18 | 19 |첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다.
20 | 21 | ### 출력 22 | 23 |첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다.
24 | 25 | -------------------------------------------------------------------------------- /백준/Bronze/11005. 진법 변환 2/README.md: -------------------------------------------------------------------------------- 1 | # [Bronze I] 진법 변환 2 - 11005 2 | 3 | [문제 링크](https://www.acmicpc.net/problem/11005) 4 | 5 | ### 성능 요약 6 | 7 | 메모리: 11628 KB, 시간: 84 ms 8 | 9 | ### 분류 10 | 11 | 구현, 수학 12 | 13 | ### 문제 설명 14 | 15 |10진법 수 N이 주어진다. 이 수를 B진법으로 바꿔 출력하는 프로그램을 작성하시오.
16 | 17 |10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 사용한다.
18 | 19 |A: 10, B: 11, ..., F: 15, ..., Y: 34, Z: 35
20 | 21 | ### 입력 22 | 23 |첫째 줄에 N과 B가 주어진다. (2 ≤ B ≤ 36) N은 10억보다 작거나 같은 자연수이다.
24 | 25 | ### 출력 26 | 27 |첫째 줄에 10진법 수 N을 B진법으로 출력한다.
28 | 29 | -------------------------------------------------------------------------------- /백준/Bronze/11021. A+B - 7/A+B - 7.java: -------------------------------------------------------------------------------- 1 | import java.io.*; 2 | 3 | public class Main { 4 | private static BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); 5 | private static BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(System.out)); 6 | 7 | public static void main(String[] args) throws IOException { 8 | int T = Integer.parseInt(bufferedReader.readLine()); // 테스트 케이스 개수 9 | 10 | for (int i = 1; i <= T; i++) { 11 | String[] input = bufferedReader.readLine().split(" "); 12 | int sum = Integer.parseInt(input[0]) + Integer.parseInt(input[1]); 13 | 14 | String result = String.format("Case #%d: %d\n", i, sum); 15 | bufferedWriter.write(result); 16 | } 17 | 18 | bufferedWriter.close(); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /백준/Bronze/11021. A+B - 7/README.md: -------------------------------------------------------------------------------- 1 | # [Bronze V] A+B - 7 - 11021 2 | 3 | [문제 링크](https://www.acmicpc.net/problem/11021) 4 | 5 | ### 성능 요약 6 | 7 | 메모리: 11980 KB, 시간: 100 ms 8 | 9 | ### 분류 10 | 11 | 구현, 사칙연산, 수학 12 | 13 | ### 문제 설명 14 | 15 |두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.
16 | 17 | ### 입력 18 | 19 |첫째 줄에 테스트 케이스의 개수 T가 주어진다.
20 | 21 |각 테스트 케이스는 한 줄로 이루어져 있으며, 각 줄에 A와 B가 주어진다. (0 < A, B < 10)
22 | 23 | ### 출력 24 | 25 |각 테스트 케이스마다 "Case #x: "를 출력한 다음, A+B를 출력한다. 테스트 케이스 번호는 1부터 시작한다.
26 | 27 | -------------------------------------------------------------------------------- /백준/Bronze/1110. 더하기 사이클/README.md: -------------------------------------------------------------------------------- 1 | # [Bronze I] 더하기 사이클 - 1110 2 | 3 | [문제 링크](https://www.acmicpc.net/problem/1110) 4 | 5 | ### 성능 요약 6 | 7 | 메모리: 11576 KB, 시간: 80 ms 8 | 9 | ### 분류 10 | 11 | 구현, 수학 12 | 13 | ### 문제 설명 14 | 15 |0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음, 주어진 수의 가장 오른쪽 자리 수와 앞에서 구한 합의 가장 오른쪽 자리 수를 이어 붙이면 새로운 수를 만들 수 있다. 다음 예를 보자.
16 | 17 |26부터 시작한다. 2+6 = 8이다. 새로운 수는 68이다. 6+8 = 14이다. 새로운 수는 84이다. 8+4 = 12이다. 새로운 수는 42이다. 4+2 = 6이다. 새로운 수는 26이다.
18 | 19 |위의 예는 4번만에 원래 수로 돌아올 수 있다. 따라서 26의 사이클의 길이는 4이다.
20 | 21 |N이 주어졌을 때, N의 사이클의 길이를 구하는 프로그램을 작성하시오.
22 | 23 | ### 입력 24 | 25 |첫째 줄에 N이 주어진다. N은 0보다 크거나 같고, 99보다 작거나 같은 정수이다.
26 | 27 | ### 출력 28 | 29 |첫째 줄에 N의 사이클 길이를 출력한다.
30 | 31 | -------------------------------------------------------------------------------- /백준/Bronze/11382. 꼬마 정민/README.md: -------------------------------------------------------------------------------- 1 | # [Bronze V] 꼬마 정민 - 11382 2 | 3 | [문제 링크](https://www.acmicpc.net/problem/11382) 4 | 5 | ### 성능 요약 6 | 7 | 메모리: 11524 KB, 시간: 80 ms 8 | 9 | ### 분류 10 | 11 | 구현, 사칙연산, 수학 12 | 13 | ### 문제 설명 14 | 15 |꼬마 정민이는 이제 A + B 정도는 쉽게 계산할 수 있다. 이제 A + B + C를 계산할 차례이다!
16 | 17 | ### 입력 18 | 19 |첫 번째 줄에 A, B, C (1 ≤ A, B, C ≤ 1012)이 공백을 사이에 두고 주어진다.
20 | 21 | ### 출력 22 | 23 |A+B+C의 값을 출력한다.
24 | 25 | -------------------------------------------------------------------------------- /백준/Bronze/11382. 꼬마 정민/꼬마 정민.java: -------------------------------------------------------------------------------- 1 | import java.io.*; 2 | import java.util.StringTokenizer; 3 | 4 | public class Main { 5 | private static BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); 6 | 7 | public static void main(String[] args) throws IOException { 8 | StringTokenizer stringTokenizer = new StringTokenizer(bufferedReader.readLine()); 9 | long A = Long.parseLong(stringTokenizer.nextToken()); 10 | long B = Long.parseLong(stringTokenizer.nextToken()); 11 | long C = Long.parseLong(stringTokenizer.nextToken()); 12 | 13 | long result = A + B + C; 14 | 15 | System.out.println(result); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /백준/Bronze/1152. 단어의 개수/README.md: -------------------------------------------------------------------------------- 1 | # [Bronze II] 단어의 개수 - 1152 2 | 3 | [문제 링크](https://www.acmicpc.net/problem/1152) 4 | 5 | ### 성능 요약 6 | 7 | 메모리: 19512 KB, 시간: 176 ms 8 | 9 | ### 분류 10 | 11 | 구현, 문자열 12 | 13 | ### 문제 설명 14 | 15 |영어 대소문자와 공백으로 이루어진 문자열이 주어진다. 이 문자열에는 몇 개의 단어가 있을까? 이를 구하는 프로그램을 작성하시오. 단, 한 단어가 여러 번 등장하면 등장한 횟수만큼 모두 세어야 한다.
16 | 17 | ### 입력 18 | 19 |첫 줄에 영어 대소문자와 공백으로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1,000,000을 넘지 않는다. 단어는 공백 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다. 또한 문자열은 공백으로 시작하거나 끝날 수 있다.
20 | 21 | ### 출력 22 | 23 |첫째 줄에 단어의 개수를 출력한다.
24 | 25 | -------------------------------------------------------------------------------- /백준/Bronze/1152. 단어의 개수/단어의 개수.java: -------------------------------------------------------------------------------- 1 | import java.io.*; 2 | import java.util.Arrays; 3 | import java.util.StringTokenizer; 4 | 5 | public class Main { 6 | private static BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); 7 | 8 | public static void main(String[] args) throws IOException { 9 | StringTokenizer S = new StringTokenizer(bufferedReader.readLine()); 10 | System.out.println(S.countTokens()); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /백준/Bronze/1157. 단어 공부/README.md: -------------------------------------------------------------------------------- 1 | # [Bronze I] 단어 공부 - 1157 2 | 3 | [문제 링크](https://www.acmicpc.net/problem/1157) 4 | 5 | ### 성능 요약 6 | 7 | 메모리: 127868 KB, 시간: 600 ms 8 | 9 | ### 분류 10 | 11 | 구현, 문자열 12 | 13 | ### 문제 설명 14 | 15 |알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다.
16 | 17 | ### 입력 18 | 19 |첫째 줄에 알파벳 대소문자로 이루어진 단어가 주어진다. 주어지는 단어의 길이는 1,000,000을 넘지 않는다.
20 | 21 | ### 출력 22 | 23 |첫째 줄에 이 단어에서 가장 많이 사용된 알파벳을 대문자로 출력한다. 단, 가장 많이 사용된 알파벳이 여러 개 존재하는 경우에는 ?를 출력한다.
24 | 25 | -------------------------------------------------------------------------------- /백준/Bronze/11653. 소인수분해/README.md: -------------------------------------------------------------------------------- 1 | # [Bronze I] 소인수분해 - 11653 2 | 3 | [문제 링크](https://www.acmicpc.net/problem/11653) 4 | 5 | ### 성능 요약 6 | 7 | 메모리: 11608 KB, 시간: 112 ms 8 | 9 | ### 분류 10 | 11 | 수학, 정수론, 소수 판정 12 | 13 | ### 문제 설명 14 | 15 |정수 N이 주어졌을 때, 소인수분해하는 프로그램을 작성하시오.
16 | 17 | ### 입력 18 | 19 |첫째 줄에 정수 N (1 ≤ N ≤ 10,000,000)이 주어진다.
20 | 21 | ### 출력 22 | 23 |N의 소인수분해 결과를 한 줄에 하나씩 오름차순으로 출력한다. N이 1인 경우 아무것도 출력하지 않는다.
24 | 25 | -------------------------------------------------------------------------------- /백준/Bronze/11653. 소인수분해/소인수분해.java: -------------------------------------------------------------------------------- 1 | import java.io.*; 2 | 3 | public class Main { 4 | private static BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); 5 | 6 | public static void main(String[] args) throws IOException { 7 | int N = Integer.parseInt(bufferedReader.readLine()); 8 | if (N == 1) { 9 | return; 10 | } 11 | 12 | int i = 2; 13 | while (N > 1) { 14 | while (N % i == 0 && N > 1) { 15 | N /= i; 16 | System.out.println(i); 17 | } 18 | i++; 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /백준/Bronze/11654. 아스키 코드/README.md: -------------------------------------------------------------------------------- 1 | # [Bronze V] 아스키 코드 - 11654 2 | 3 | [문제 링크](https://www.acmicpc.net/problem/11654) 4 | 5 | ### 성능 요약 6 | 7 | 메모리: 11484 KB, 시간: 80 ms 8 | 9 | ### 분류 10 | 11 | 구현 12 | 13 | ### 문제 설명 14 | 15 |알파벳 소문자, 대문자, 숫자 0-9중 하나가 주어졌을 때, 주어진 글자의 아스키 코드값을 출력하는 프로그램을 작성하시오.
16 | 17 | ### 입력 18 | 19 |알파벳 소문자, 대문자, 숫자 0-9 중 하나가 첫째 줄에 주어진다.
20 | 21 | ### 출력 22 | 23 |입력으로 주어진 글자의 아스키 코드 값을 출력한다.
24 | 25 | -------------------------------------------------------------------------------- /백준/Bronze/11654. 아스키 코드/아스키 코드.java: -------------------------------------------------------------------------------- 1 | import java.io.*; 2 | 3 | public class Main { 4 | private static BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); 5 | 6 | public static void main(String[] args) throws IOException { 7 | int word = bufferedReader.readLine().charAt(0); 8 | System.out.println(word); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /백준/Bronze/11718. 그대로 출력하기/README.md: -------------------------------------------------------------------------------- 1 | # [Bronze V] 그대로 출력하기 - 11718 2 | 3 | [문제 링크](https://www.acmicpc.net/problem/11718) 4 | 5 | ### 성능 요약 6 | 7 | 메모리: 12096 KB, 시간: 84 ms 8 | 9 | ### 분류 10 | 11 | 구현, 문자열 12 | 13 | ### 문제 설명 14 | 15 |입력 받은 대로 출력하는 프로그램을 작성하시오.
16 | 17 | ### 입력 18 | 19 |입력이 주어진다. 입력은 최대 100줄로 이루어져 있고, 알파벳 소문자, 대문자, 공백, 숫자로만 이루어져 있다. 각 줄은 100글자를 넘지 않으며, 빈 줄은 주어지지 않는다. 또, 각 줄은 공백으로 시작하지 않고, 공백으로 끝나지 않는다.
20 | 21 | ### 출력 22 | 23 |입력받은 그대로 출력한다.
24 | 25 | -------------------------------------------------------------------------------- /백준/Bronze/11718. 그대로 출력하기/그대로 출력하기.java: -------------------------------------------------------------------------------- 1 | import java.io.*; 2 | 3 | public class Main { 4 | private static BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); 5 | 6 | public static void main(String[] args) throws IOException { 7 | String s; 8 | while((s = bufferedReader.readLine()) != null){ 9 | System.out.println(s); 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /백준/Bronze/11720. 숫자의 합/README.md: -------------------------------------------------------------------------------- 1 | # [Bronze IV] 숫자의 합 - 11720 2 | 3 | [문제 링크](https://www.acmicpc.net/problem/11720) 4 | 5 | ### 성능 요약 6 | 7 | 메모리: 11500 KB, 시간: 76 ms 8 | 9 | ### 분류 10 | 11 | 구현, 수학, 문자열 12 | 13 | ### 문제 설명 14 | 15 |N개의 숫자가 공백 없이 쓰여있다. 이 숫자를 모두 합해서 출력하는 프로그램을 작성하시오.
16 | 17 | ### 입력 18 | 19 |첫째 줄에 숫자의 개수 N (1 ≤ N ≤ 100)이 주어진다. 둘째 줄에 숫자 N개가 공백없이 주어진다.
20 | 21 | ### 출력 22 | 23 |입력으로 주어진 숫자 N개의 합을 출력한다.
24 | 25 | -------------------------------------------------------------------------------- /백준/Bronze/11720. 숫자의 합/숫자의 합.java: -------------------------------------------------------------------------------- 1 | import java.io.BufferedReader; 2 | import java.io.IOException; 3 | import java.io.InputStreamReader; 4 | 5 | public class Main { 6 | private static BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); 7 | 8 | public static void main(String[] args) throws IOException { 9 | int N = Integer.parseInt(bufferedReader.readLine()); // 숫자개수 10 | char[] numbers = bufferedReader.readLine().toCharArray(); // 입력된 숫자 11 | long result = 0; 12 | for (char number : numbers) { 13 | result += Integer.parseInt(String.valueOf(number)); 14 | } 15 | 16 | System.out.print(result); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /백준/Bronze/13458. 시험 감독/README.md: -------------------------------------------------------------------------------- 1 | # [Bronze II] 시험 감독 - 13458 2 | 3 | [문제 링크](https://www.acmicpc.net/problem/13458) 4 | 5 | ### 성능 요약 6 | 7 | 메모리: 117504 KB, 시간: 388 ms 8 | 9 | ### 분류 10 | 11 | 사칙연산, 수학 12 | 13 | ### 문제 설명 14 | 15 |총 N개의 시험장이 있고, 각각의 시험장마다 응시자들이 있다. i번 시험장에 있는 응시자의 수는 Ai명이다.
16 | 17 |감독관은 총감독관과 부감독관으로 두 종류가 있다. 총감독관은 한 시험장에서 감시할 수 있는 응시자의 수가 B명이고, 부감독관은 한 시험장에서 감시할 수 있는 응시자의 수가 C명이다.
18 | 19 |각각의 시험장에 총감독관은 오직 1명만 있어야 하고, 부감독관은 여러 명 있어도 된다.
20 | 21 |각 시험장마다 응시생들을 모두 감시해야 한다. 이때, 필요한 감독관 수의 최솟값을 구하는 프로그램을 작성하시오.
22 | 23 | ### 입력 24 | 25 |첫째 줄에 시험장의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다.
26 | 27 |둘째 줄에는 각 시험장에 있는 응시자의 수 Ai (1 ≤ Ai ≤ 1,000,000)가 주어진다.
28 | 29 |셋째 줄에는 B와 C가 주어진다. (1 ≤ B, C ≤ 1,000,000)
30 | 31 | ### 출력 32 | 33 |각 시험장마다 응시생을 모두 감독하기 위해 필요한 감독관의 최소 수를 출력한다.
34 | 35 | -------------------------------------------------------------------------------- /백준/Bronze/14215. 세 막대/README.md: -------------------------------------------------------------------------------- 1 | # [Bronze III] 세 막대 - 14215 2 | 3 | [문제 링크](https://www.acmicpc.net/problem/14215) 4 | 5 | ### 성능 요약 6 | 7 | 메모리: 11572 KB, 시간: 76 ms 8 | 9 | ### 분류 10 | 11 | 기하학, 구현, 수학 12 | 13 | ### 문제 설명 14 | 15 |영선이는 길이가 a, b, c인 세 막대를 가지고 있고, 각 막대의 길이를 마음대로 줄일 수 있다.
16 | 17 |영선이는 세 막대를 이용해서 아래 조건을 만족하는 삼각형을 만들려고 한다.
18 | 19 |a, b, c가 주어졌을 때, 만들 수 있는 가장 큰 둘레를 구하는 프로그램을 작성하시오.
26 | 27 | ### 입력 28 | 29 |첫째 줄에 a, b, c (1 ≤ a, b, c ≤ 100)가 주어진다.
30 | 31 | ### 출력 32 | 33 |첫째 줄에 만들 수 있는 가장 큰 삼각형의 둘레를 출력한다.
34 | 35 | -------------------------------------------------------------------------------- /백준/Bronze/14215. 세 막대/세 막대.java: -------------------------------------------------------------------------------- 1 | import java.io.*; 2 | import java.util.Arrays; 3 | import java.util.StringTokenizer; 4 | 5 | public class Main { 6 | private static BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); 7 | 8 | public static void main(String[] args) throws IOException { 9 | StringTokenizer line = new StringTokenizer(bufferedReader.readLine()); 10 | int a = Integer.parseInt(line.nextToken()); 11 | int b = Integer.parseInt(line.nextToken()); 12 | int c = Integer.parseInt(line.nextToken()); 13 | 14 | int[] sort = {a, b, c}; 15 | Arrays.sort(sort); 16 | 17 | if (sort[0] + sort[1] <= sort[2]) { 18 | sort[2] = sort[0] + sort[1] - 1; 19 | } 20 | int result = sort[0] + sort[1] + sort[2]; 21 | 22 | System.out.println(result); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /백준/Bronze/15439. 베라의 패션/README.md: -------------------------------------------------------------------------------- 1 | # [Bronze IV] 베라의 패션 - 15439 2 | 3 | [문제 링크](https://www.acmicpc.net/problem/15439) 4 | 5 | ### 성능 요약 6 | 7 | 메모리: 11532 KB, 시간: 76 ms 8 | 9 | ### 분류 10 | 11 | 구현, 조합론, 수학 12 | 13 | ### 문제 설명 14 | 15 |베라는 상의 N 벌과 하의 N 벌이 있다. i 번째 상의와 i 번째 하의는 모두 색상 i를 가진다. N 개의 색상은 모두 서로 다르다.
16 | 17 |상의와 하의가 서로 다른 색상인 조합은 총 몇 가지일까?
18 | 19 | ### 입력 20 | 21 |입력은 아래와 같이 주어진다.
22 | 23 |N24 | 25 | ### 출력 26 | 27 |
상의와 하의가 서로 다른 색상인 조합의 가짓수를 출력한다.
28 | 29 | -------------------------------------------------------------------------------- /백준/Bronze/15439. 베라의 패션/베라의 패션.java: -------------------------------------------------------------------------------- 1 | import java.io.*; 2 | 3 | public class Main { 4 | private static BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); 5 | private static BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(System.out)); 6 | 7 | public static void main(String[] args) throws IOException { 8 | int N = Integer.parseInt(bufferedReader.readLine()); 9 | 10 | int result = N * N - N; 11 | bufferedWriter.write(String.valueOf(result)); 12 | bufferedWriter.flush(); 13 | bufferedWriter.close(); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /백준/Bronze/1546. 평균/README.md: -------------------------------------------------------------------------------- 1 | # [Bronze I] 평균 - 1546 2 | 3 | [문제 링크](https://www.acmicpc.net/problem/1546) 4 | 5 | ### 성능 요약 6 | 7 | 메모리: 11904 KB, 시간: 84 ms 8 | 9 | ### 분류 10 | 11 | 사칙연산(arithmetic), 수학(math) 12 | 13 | ### 문제 설명 14 | 15 |세준이는 기말고사를 망쳤다. 세준이는 점수를 조작해서 집에 가져가기로 했다. 일단 세준이는 자기 점수 중에 최댓값을 골랐다. 이 값을 M이라고 한다. 그리고 나서 모든 점수를 점수/M*100으로 고쳤다.
16 | 17 |예를 들어, 세준이의 최고점이 70이고, 수학점수가 50이었으면 수학점수는 50/70*100이 되어 71.43점이 된다.
18 | 19 |세준이의 성적을 위의 방법대로 새로 계산했을 때, 새로운 평균을 구하는 프로그램을 작성하시오.
20 | 21 | ### 입력 22 | 23 |첫째 줄에 시험 본 과목의 개수 N이 주어진다. 이 값은 1000보다 작거나 같다. 둘째 줄에 세준이의 현재 성적이 주어진다. 이 값은 100보다 작거나 같은 음이 아닌 정수이고, 적어도 하나의 값은 0보다 크다.
24 | 25 | ### 출력 26 | 27 |첫째 줄에 새로운 평균을 출력한다. 실제 정답과 출력값의 절대오차 또는 상대오차가 10-2 이하이면 정답이다.
28 | 29 | -------------------------------------------------------------------------------- /백준/Bronze/18108. 1998년생인 내가 태국에서는 2541년생?!/1998년생인 내가 태국에서는 2541년생?!.java: -------------------------------------------------------------------------------- 1 | import java.io.*; 2 | 3 | public class Main { 4 | public static void main(String[] args) throws IOException { 5 | BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); 6 | 7 | int year = Integer.parseInt(reader.readLine()); 8 | 9 | System.out.println(year - 543); 10 | } 11 | } -------------------------------------------------------------------------------- /백준/Bronze/18108. 1998년생인 내가 태국에서는 2541년생?!/README.md: -------------------------------------------------------------------------------- 1 | # [Bronze V] 1998년생인 내가 태국에서는 2541년생?! - 18108 2 | 3 | [문제 링크](https://www.acmicpc.net/problem/18108) 4 | 5 | ### 성능 요약 6 | 7 | 메모리: 11504 KB, 시간: 72 ms 8 | 9 | ### 분류 10 | 11 | 사칙연산(arithmetic), 수학(math) 12 | 13 | ### 문제 설명 14 | 15 |ICPC Bangkok Regional에 참가하기 위해 수완나품 국제공항에 막 도착한 팀 레드시프트 일행은 눈을 믿을 수 없었다. 공항의 대형 스크린에 올해가 2562년이라고 적혀 있던 것이었다.
16 | 17 |불교 국가인 태국은 불멸기원(佛滅紀元), 즉 석가모니가 열반한 해를 기준으로 연도를 세는 불기를 사용한다. 반면, 우리나라는 서기 연도를 사용하고 있다. 불기 연도가 주어질 때 이를 서기 연도로 바꿔 주는 프로그램을 작성하시오.
18 | 19 | ### 입력 20 | 21 |서기 연도를 알아보고 싶은 불기 연도 y가 주어진다. (1000 ≤ y ≤ 3000)
22 | 23 | ### 출력 24 | 25 |불기 연도를 서기 연도로 변환한 결과를 출력한다.
26 | 27 | -------------------------------------------------------------------------------- /백준/Bronze/1934. 최소공배수/README.md: -------------------------------------------------------------------------------- 1 | # [Bronze I] 최소공배수 - 1934 2 | 3 | [문제 링크](https://www.acmicpc.net/problem/1934) 4 | 5 | ### 성능 요약 6 | 7 | 메모리: 17008 KB, 시간: 236 ms 8 | 9 | ### 분류 10 | 11 | 유클리드 호제법, 수학, 정수론 12 | 13 | ### 문제 설명 14 | 15 |두 자연수 A와 B에 대해서, A의 배수이면서 B의 배수인 자연수를 A와 B의 공배수라고 한다. 이런 공배수 중에서 가장 작은 수를 최소공배수라고 한다. 예를 들어, 6과 15의 공배수는 30, 60, 90등이 있으며, 최소 공배수는 30이다.
16 | 17 |두 자연수 A와 B가 주어졌을 때, A와 B의 최소공배수를 구하는 프로그램을 작성하시오.
18 | 19 | ### 입력 20 | 21 |첫째 줄에 테스트 케이스의 개수 T(1 ≤ T ≤ 1,000)가 주어진다. 둘째 줄부터 T개의 줄에 걸쳐서 A와 B가 주어진다. (1 ≤ A, B ≤ 45,000)
22 | 23 | ### 출력 24 | 25 |첫째 줄부터 T개의 줄에 A와 B의 최소공배수를 입력받은 순서대로 한 줄에 하나씩 출력한다.
26 | 27 | -------------------------------------------------------------------------------- /백준/Bronze/1978. 소수 찾기/README.md: -------------------------------------------------------------------------------- 1 | # [Bronze II] 소수 찾기 - 1978 2 | 3 | [문제 링크](https://www.acmicpc.net/problem/1978) 4 | 5 | ### 성능 요약 6 | 7 | 메모리: 11724 KB, 시간: 84 ms 8 | 9 | ### 분류 10 | 11 | 소수 판정, 정수론, 수학 12 | 13 | ### 문제 설명 14 | 15 |주어진 수 N개 중에서 소수가 몇 개인지 찾아서 출력하는 프로그램을 작성하시오.
16 | 17 | ### 입력 18 | 19 |첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다.
20 | 21 | ### 출력 22 | 23 |주어진 수들 중 소수의 개수를 출력한다.
24 | 25 | -------------------------------------------------------------------------------- /백준/Bronze/20492. 세금/세금.java: -------------------------------------------------------------------------------- 1 | import java.io.*; 2 | 3 | public class Main { 4 | private static BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); 5 | 6 | public static void main(String[] args) throws IOException { 7 | int n = Integer.parseInt(bufferedReader.readLine()); 8 | int result1 = (int) (n * 0.78); 9 | int result2 = (int) (n - ((n * 0.20) * 0.22)); 10 | System.out.println(result1 + " " + result2); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /백준/Bronze/2292. 벌집/README.md: -------------------------------------------------------------------------------- 1 | # [Bronze II] 벌집 - 2292 2 | 3 | [문제 링크](https://www.acmicpc.net/problem/2292) 4 | 5 | ### 성능 요약 6 | 7 | 메모리: 11472 KB, 시간: 76 ms 8 | 9 | ### 분류 10 | 11 | 수학 12 | 13 | ### 문제 설명 14 | 15 |위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌을 때, 벌집의 중앙 1에서 N번 방까지 최소 개수의 방을 지나서 갈 때 몇 개의 방을 지나가는지(시작과 끝을 포함하여)를 계산하는 프로그램을 작성하시오. 예를 들면, 13까지는 3개, 58까지는 5개를 지난다.
18 | 19 | ### 입력 20 | 21 |첫째 줄에 N(1 ≤ N ≤ 1,000,000,000)이 주어진다.
22 | 23 | ### 출력 24 | 25 |입력으로 주어진 방까지 최소 개수의 방을 지나서 갈 때 몇 개의 방을 지나는지 출력한다.
26 | 27 | -------------------------------------------------------------------------------- /백준/Bronze/2292. 벌집/벌집.java: -------------------------------------------------------------------------------- 1 | import java.io.BufferedReader; 2 | import java.io.IOException; 3 | import java.io.InputStreamReader; 4 | 5 | public class Main { 6 | private static BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); 7 | 8 | public static void main(String[] args) throws IOException { 9 | int room = Integer.parseInt(bufferedReader.readLine()); 10 | 11 | int roomCount = 1; 12 | int result = 1; 13 | while(roomCount < room) { 14 | roomCount += (6 * result); 15 | result++; 16 | } 17 | 18 | System.out.println(result); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /백준/Bronze/2438. 별 찍기 - 1/README.md: -------------------------------------------------------------------------------- 1 | # [Bronze V] 별 찍기 - 1 - 2438 2 | 3 | [문제 링크](https://www.acmicpc.net/problem/2438) 4 | 5 | ### 성능 요약 6 | 7 | 메모리: 11644 KB, 시간: 84 ms 8 | 9 | ### 분류 10 | 11 | 구현(implementation) 12 | 13 | ### 문제 설명 14 | 15 |첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제
16 | 17 | ### 입력 18 | 19 |첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.
20 | 21 | ### 출력 22 | 23 |첫째 줄부터 N번째 줄까지 차례대로 별을 출력한다.
24 | 25 | -------------------------------------------------------------------------------- /백준/Bronze/2438. 별 찍기 - 1/별 찍기 - 1.java: -------------------------------------------------------------------------------- 1 | import java.io.*; 2 | 3 | public class Main { 4 | public static void main(String[] args) throws IOException { 5 | BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); 6 | int input = Integer.parseInt(reader.readLine()); 7 | 8 | StringBuilder result = new StringBuilder(); 9 | 10 | for (int x = 1; x <= input; x++) { 11 | for (int y = 1; y <= x; y++) { 12 | result.append("*"); 13 | } 14 | if (x != input) { 15 | result.append("\n"); 16 | } 17 | } 18 | 19 | BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(System.out)); 20 | writer.write(result.toString()); 21 | writer.flush(); 22 | writer.close(); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /백준/Bronze/2439. 별 찍기 - 2/README.md: -------------------------------------------------------------------------------- 1 | # [Bronze IV] 별 찍기 - 2 - 2439 2 | 3 | [문제 링크](https://www.acmicpc.net/problem/2439) 4 | 5 | ### 성능 요약 6 | 7 | 메모리: 11720 KB, 시간: 80 ms 8 | 9 | ### 분류 10 | 11 | 구현(implementation) 12 | 13 | ### 문제 설명 14 | 15 |첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제
16 | 17 |하지만, 오른쪽을 기준으로 정렬한 별(예제 참고)을 출력하시오.
18 | 19 | ### 입력 20 | 21 |첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.
22 | 23 | ### 출력 24 | 25 |첫째 줄부터 N번째 줄까지 차례대로 별을 출력한다.
26 | 27 | -------------------------------------------------------------------------------- /백준/Bronze/2444. 별 찍기 - 7/README.md: -------------------------------------------------------------------------------- 1 | # [Bronze III] 별 찍기 - 7 - 2444 2 | 3 | [문제 링크](https://www.acmicpc.net/problem/2444) 4 | 5 | ### 성능 요약 6 | 7 | 메모리: 14364 KB, 시간: 132 ms 8 | 9 | ### 분류 10 | 11 | 구현 12 | 13 | ### 문제 설명 14 | 15 |예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요.
16 | 17 | ### 입력 18 | 19 |첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.
20 | 21 | ### 출력 22 | 23 |첫째 줄부터 2×N-1번째 줄까지 차례대로 별을 출력한다.
24 | 25 | -------------------------------------------------------------------------------- /백준/Bronze/2444. 별 찍기 - 7/별 찍기 - 7.java: -------------------------------------------------------------------------------- 1 | import java.io.*; 2 | 3 | public class Main { 4 | private static BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); 5 | private static BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(System.out)); 6 | 7 | public static void main(String[] args) throws IOException { 8 | int N = Integer.parseInt(bufferedReader.readLine()); 9 | String[] stars = new String[N]; 10 | for(int i = 1; i <= ((2 * N) - 1); i++) { 11 | if (i <= N) { 12 | String star = " ".repeat(N - i) + "*".repeat((i * 2) - 1); 13 | stars[i - 1] = star; 14 | bufferedWriter.write(star + "\n"); 15 | } 16 | } 17 | for(int i = N - 2; i >= 0; i--) { 18 | bufferedWriter.write(stars[i] + "\n"); 19 | } 20 | bufferedWriter.close(); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /백준/Bronze/24723. 녹색거탑/녹색거탑.java: -------------------------------------------------------------------------------- 1 | import java.io.*; 2 | 3 | public class Main { 4 | private static BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); 5 | private static BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(System.out)); 6 | 7 | public static void main(String[] args) throws IOException { 8 | int N = Integer.parseInt(bufferedReader.readLine()); 9 | 10 | int result = (int) Math.pow(2, N); 11 | bufferedWriter.write(String.valueOf(result)); 12 | bufferedWriter.flush(); 13 | bufferedWriter.close(); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /백준/Bronze/2475. 검증수/README.md: -------------------------------------------------------------------------------- 1 | # [Bronze V] 검증수 - 2475 2 | 3 | [문제 링크](https://www.acmicpc.net/problem/2475) 4 | 5 | ### 성능 요약 6 | 7 | 메모리: 11504 KB, 시간: 76 ms 8 | 9 | ### 분류 10 | 11 | 구현, 사칙연산, 수학 12 | 13 | ### 문제 설명 14 | 15 |컴퓨터를 제조하는 회사인 KOI 전자에서는 제조하는 컴퓨터마다 6자리의 고유번호를 매긴다. 고유번호의 처음 5자리에는 00000부터 99999까지의 수 중 하나가 주어지며 6번째 자리에는 검증수가 들어간다. 검증수는 고유번호의 처음 5자리에 들어가는 5개의 숫자를 각각 제곱한 수의 합을 10으로 나눈 나머지이다.
16 | 17 |예를 들어 고유번호의 처음 5자리의 숫자들이 04256이면, 각 숫자를 제곱한 수들의 합 0+16+4+25+36 = 81 을 10으로 나눈 나머지인 1이 검증수이다.
18 | 19 | ### 입력 20 | 21 |첫째 줄에 고유번호의 처음 5자리의 숫자들이 빈칸을 사이에 두고 하나씩 주어진다.
22 | 23 | ### 출력 24 | 25 |첫째 줄에 검증수를 출력한다.
26 | 27 | -------------------------------------------------------------------------------- /백준/Bronze/2475. 검증수/검증수.java: -------------------------------------------------------------------------------- 1 | import java.io.*; 2 | import java.util.StringTokenizer; 3 | 4 | public class Main { 5 | private static BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); 6 | 7 | public static void main(String[] args) throws IOException { 8 | StringTokenizer line = new StringTokenizer(bufferedReader.readLine()); 9 | 10 | int all = 0; 11 | for (int i = 0; i < 5; i++) { 12 | int a = Integer.parseInt(line.nextToken()); 13 | all += (a * a); 14 | } 15 | int result = all % 10; 16 | 17 | System.out.println(result); 18 | } 19 | } -------------------------------------------------------------------------------- /백준/Bronze/2480. 주사위 세개/README.md: -------------------------------------------------------------------------------- 1 | # [Bronze IV] 주사위 세개 - 2480 2 | 3 | [문제 링크](https://www.acmicpc.net/problem/2480) 4 | 5 | ### 성능 요약 6 | 7 | 메모리: 11628 KB, 시간: 80 ms 8 | 9 | ### 분류 10 | 11 | 사칙연산(arithmetic), 수학(math) 12 | 13 | ### 문제 설명 14 | 15 |1에서부터 6까지의 눈을 가진 3개의 주사위를 던져서 다음과 같은 규칙에 따라 상금을 받는 게임이 있다.
16 | 17 |예를 들어, 3개의 눈 3, 3, 6이 주어지면 상금은 1,000+3×100으로 계산되어 1,300원을 받게 된다. 또 3개의 눈이 2, 2, 2로 주어지면 10,000+2×1,000 으로 계산되어 12,000원을 받게 된다. 3개의 눈이 6, 2, 5로 주어지면 그중 가장 큰 값이 6이므로 6×100으로 계산되어 600원을 상금으로 받게 된다.
24 | 25 |3개 주사위의 나온 눈이 주어질 때, 상금을 계산하는 프로그램을 작성 하시오.
26 | 27 | ### 입력 28 | 29 |첫째 줄에 3개의 눈이 빈칸을 사이에 두고 각각 주어진다.
30 | 31 | ### 출력 32 | 33 |첫째 줄에 게임의 상금을 출력 한다.
34 | 35 | -------------------------------------------------------------------------------- /백준/Bronze/2501. 약수 구하기/README.md: -------------------------------------------------------------------------------- 1 | # [Bronze III] 약수 구하기 - 2501 2 | 3 | [문제 링크](https://www.acmicpc.net/problem/2501) 4 | 5 | ### 성능 요약 6 | 7 | 메모리: 11544 KB, 시간: 80 ms 8 | 9 | ### 분류 10 | 11 | 브루트포스 알고리즘, 수학 12 | 13 | ### 문제 설명 14 | 15 |어떤 자연수 p와 q가 있을 때, 만일 p를 q로 나누었을 때 나머지가 0이면 q는 p의 약수이다.
16 | 17 |6을 예로 들면
18 | 19 |그래서 6의 약수는 1, 2, 3, 6, 총 네 개이다.
29 | 30 |두 개의 자연수 N과 K가 주어졌을 때, N의 약수들 중 K번째로 작은 수를 출력하는 프로그램을 작성하시오.
31 | 32 | ### 입력 33 | 34 |첫째 줄에 N과 K가 빈칸을 사이에 두고 주어진다. N은 1 이상 10,000 이하이다. K는 1 이상 N 이하이다.
35 | 36 | ### 출력 37 | 38 |첫째 줄에 N의 약수들 중 K번째로 작은 수를 출력한다. 만일 N의 약수의 개수가 K개보다 적어서 K번째 약수가 존재하지 않을 경우에는 0을 출력하시오.
39 | 40 | -------------------------------------------------------------------------------- /백준/Bronze/25083. 새싹/README.md: -------------------------------------------------------------------------------- 1 | # [Bronze V] 새싹 - 25083 2 | 3 | [문제 링크](https://www.acmicpc.net/problem/25083) 4 | 5 | ### 성능 요약 6 | 7 | 메모리: 11328 KB, 시간: 72 ms 8 | 9 | ### 분류 10 | 11 | 구현(implementation) 12 | 13 | ### 문제 설명 14 | 15 |아래 예제와 같이 새싹을 출력하시오.
16 | 17 | ### 입력 18 | 19 |입력은 없다.
20 | 21 | ### 출력 22 | 23 |새싹을 출력한다.
24 | 25 | -------------------------------------------------------------------------------- /백준/Bronze/25083. 새싹/새싹.java: -------------------------------------------------------------------------------- 1 | import java.io.*; 2 | 3 | public class Main { 4 | public static void main(String[] args) throws IOException { 5 | System.out.println(" ,r'\"7"); 6 | System.out.println("r`-_ ,' ,/"); 7 | System.out.println(" \\. \". L_r'"); 8 | System.out.println(" `~\\/"); 9 | System.out.println(" |"); 10 | System.out.println(" |"); 11 | 12 | } 13 | } -------------------------------------------------------------------------------- /백준/Bronze/2525. 오븐 시계/README.md: -------------------------------------------------------------------------------- 1 | # [Bronze III] 오븐 시계 - 2525 2 | 3 | [문제 링크](https://www.acmicpc.net/problem/2525) 4 | 5 | ### 성능 요약 6 | 7 | 메모리: 11580 KB, 시간: 76 ms 8 | 9 | ### 분류 10 | 11 | 사칙연산(arithmetic), 수학(math) 12 | 13 | ### 문제 설명 14 | 15 |KOI 전자에서는 건강에 좋고 맛있는 훈제오리구이 요리를 간편하게 만드는 인공지능 오븐을 개발하려고 한다. 인공지능 오븐을 사용하는 방법은 적당한 양의 오리 훈제 재료를 인공지능 오븐에 넣으면 된다. 그러면 인공지능 오븐은 오븐구이가 끝나는 시간을 분 단위로 자동적으로 계산한다.
16 | 17 |또한, KOI 전자의 인공지능 오븐 앞면에는 사용자에게 훈제오리구이 요리가 끝나는 시각을 알려 주는 디지털 시계가 있다.
18 | 19 |훈제오리구이를 시작하는 시각과 오븐구이를 하는 데 필요한 시간이 분단위로 주어졌을 때, 오븐구이가 끝나는 시각을 계산하는 프로그램을 작성하시오.
20 | 21 | ### 입력 22 | 23 |첫째 줄에는 현재 시각이 나온다. 현재 시각은 시 A (0 ≤ A ≤ 23) 와 분 B (0 ≤ B ≤ 59)가 정수로 빈칸을 사이에 두고 순서대로 주어진다. 두 번째 줄에는 요리하는 데 필요한 시간 C (0 ≤ C ≤ 1,000)가 분 단위로 주어진다.
24 | 25 | ### 출력 26 | 27 |첫째 줄에 종료되는 시각의 시와 분을 공백을 사이에 두고 출력한다. (단, 시는 0부터 23까지의 정수, 분은 0부터 59까지의 정수이다. 디지털 시계는 23시 59분에서 1분이 지나면 0시 0분이 된다.)
28 | 29 | -------------------------------------------------------------------------------- /백준/Bronze/25314. 코딩은 체육과목 입니다/코딩은 체육과목 입니다.java: -------------------------------------------------------------------------------- 1 | import java.io.*; 2 | 3 | public class Main { 4 | private static BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); 5 | private static BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(System.out)); 6 | 7 | public static void main(String[] args) throws IOException { 8 | int N = Integer.parseInt(bufferedReader.readLine()); // N 바이트 9 | 10 | int count = N / 4; 11 | for (int i = 0; i < count; i++) { 12 | bufferedWriter.write("long "); 13 | } 14 | bufferedWriter.write("int"); 15 | bufferedWriter.close(); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /백준/Bronze/2581. 소수/README.md: -------------------------------------------------------------------------------- 1 | # [Bronze II] 소수 - 2581 2 | 3 | [문제 링크](https://www.acmicpc.net/problem/2581) 4 | 5 | ### 성능 요약 6 | 7 | 메모리: 12532 KB, 시간: 120 ms 8 | 9 | ### 분류 10 | 11 | 소수 판정, 정수론, 수학 12 | 13 | ### 문제 설명 14 | 15 |자연수 M과 N이 주어질 때 M이상 N이하의 자연수 중 소수인 것을 모두 골라 이들 소수의 합과 최솟값을 찾는 프로그램을 작성하시오.
16 | 17 |예를 들어 M=60, N=100인 경우 60이상 100이하의 자연수 중 소수는 61, 67, 71, 73, 79, 83, 89, 97 총 8개가 있으므로, 이들 소수의 합은 620이고, 최솟값은 61이 된다.
18 | 19 | ### 입력 20 | 21 |입력의 첫째 줄에 M이, 둘째 줄에 N이 주어진다.
22 | 23 |M과 N은 10,000이하의 자연수이며, M은 N보다 작거나 같다.
24 | 25 | ### 출력 26 | 27 |M이상 N이하의 자연수 중 소수인 것을 모두 찾아 첫째 줄에 그 합을, 둘째 줄에 그 중 최솟값을 출력한다.
28 | 29 |단, M이상 N이하의 자연수 중 소수가 없을 경우는 첫째 줄에 -1을 출력한다.
30 | 31 | -------------------------------------------------------------------------------- /백준/Bronze/2587. 대표값2/README.md: -------------------------------------------------------------------------------- 1 | # [Bronze II] 대표값2 - 2587 2 | 3 | [문제 링크](https://www.acmicpc.net/problem/2587) 4 | 5 | ### 성능 요약 6 | 7 | 메모리: 11476 KB, 시간: 72 ms 8 | 9 | ### 분류 10 | 11 | 사칙연산, 구현, 수학, 정렬 12 | 13 | ### 문제 설명 14 | 15 |어떤 수들이 있을 때, 그 수들을 대표하는 값으로 가장 흔하게 쓰이는 것은 평균이다. 평균은 주어진 모든 수의 합을 수의 개수로 나눈 것이다. 예를 들어 10, 40, 30, 60, 30의 평균은 (10 + 40 + 30 + 60 + 30) / 5 = 170 / 5 = 34가 된다.
16 | 17 |평균 이외의 또 다른 대표값으로 중앙값이라는 것이 있다. 중앙값은 주어진 수를 크기 순서대로 늘어 놓았을 때 가장 중앙에 놓인 값이다. 예를 들어 10, 40, 30, 60, 30의 경우, 크기 순서대로 늘어 놓으면
18 | 19 |10 30 30 40 60
20 | 21 |이 되고 따라서 중앙값은 30이 된다.
22 | 23 |다섯 개의 자연수가 주어질 때 이들의 평균과 중앙값을 구하는 프로그램을 작성하시오.
24 | 25 | ### 입력 26 | 27 |첫째 줄부터 다섯 번째 줄까지 한 줄에 하나씩 자연수가 주어진다. 주어지는 자연수는 100 보다 작은 10의 배수이다.
28 | 29 | ### 출력 30 | 31 |첫째 줄에는 평균을 출력하고, 둘째 줄에는 중앙값을 출력한다. 평균과 중앙값은 모두 자연수이다.
32 | 33 | -------------------------------------------------------------------------------- /백준/Bronze/2587. 대표값2/대표값2.java: -------------------------------------------------------------------------------- 1 | import java.io.BufferedReader; 2 | import java.io.IOException; 3 | import java.io.InputStreamReader; 4 | import java.util.Arrays; 5 | 6 | public class Main { 7 | private static BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); 8 | 9 | public static void main(String[] args) throws IOException { 10 | int[] numbers = new int[5]; 11 | int avr = 0; 12 | for (int i = 0; i < 5; i++) { 13 | int number = Integer.parseInt(bufferedReader.readLine()); 14 | numbers[i] = number; 15 | avr += number; 16 | } 17 | Arrays.sort(numbers); 18 | int result1 = avr / 5; 19 | System.out.println(result1); 20 | System.out.println(numbers[2]); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /백준/Bronze/2605. 줄 세우기/README.md: -------------------------------------------------------------------------------- 1 | # [Bronze II] 줄 세우기 - 2605 2 | 3 | [문제 링크](https://www.acmicpc.net/problem/2605) 4 | 5 | ### 성능 요약 6 | 7 | 메모리: 18408 KB, 시간: 220 ms 8 | 9 | ### 분류 10 | 11 | 자료 구조(data_structures), 구현(implementation), 연결 리스트(linked_list) 12 | 13 | -------------------------------------------------------------------------------- /백준/Bronze/2675. 문자열 반복/README.md: -------------------------------------------------------------------------------- 1 | # [Bronze II] 문자열 반복 - 2675 2 | 3 | [문제 링크](https://www.acmicpc.net/problem/2675) 4 | 5 | ### 성능 요약 6 | 7 | 메모리: 14120 KB, 시간: 120 ms 8 | 9 | ### 분류 10 | 11 | 구현, 문자열 12 | 13 | ### 문제 설명 14 | 15 |문자열 S를 입력받은 후에, 각 문자를 R번 반복해 새 문자열 P를 만든 후 출력하는 프로그램을 작성하시오. 즉, 첫 번째 문자를 R번 반복하고, 두 번째 문자를 R번 반복하는 식으로 P를 만들면 된다. S에는 QR Code "alphanumeric" 문자만 들어있다.
16 | 17 |QR Code "alphanumeric" 문자는 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ\$%*+-./:
이다.
첫째 줄에 테스트 케이스의 개수 T(1 ≤ T ≤ 1,000)가 주어진다. 각 테스트 케이스는 반복 횟수 R(1 ≤ R ≤ 8), 문자열 S가 공백으로 구분되어 주어진다. S의 길이는 적어도 1이며, 20글자를 넘지 않는다.
22 | 23 | ### 출력 24 | 25 |각 테스트 케이스에 대해 P를 출력한다.
26 | 27 | -------------------------------------------------------------------------------- /백준/Bronze/27323. 직사각형/README.md: -------------------------------------------------------------------------------- 1 | # [Bronze V] 직사각형 - 27323 2 | 3 | [문제 링크](https://www.acmicpc.net/problem/27323) 4 | 5 | ### 성능 요약 6 | 7 | 메모리: 11480 KB, 시간: 76 ms 8 | 9 | ### 분류 10 | 11 | 사칙연산, 기하학, 수학 12 | 13 | ### 문제 설명 14 | 15 |정수 A, B 가 주어진다. 세로 길이가 A cm, 가로 길이가 B cm 인 아래와 같은 직사각형의 넓이를 cm2 단위로 구하시오.
16 | 17 |표준 입력에 다음과 같은 형태로 입력이 주어진다.
22 | 23 |A 24 | B25 | 26 | ### 출력 27 | 28 |
세로 길이가 A cm, 가로 길이가 B cm인 직사각형의 넓이를 cm2 단위로 구하고, 단위 (cm2)를 생략하여 출력한다.
29 | 30 | -------------------------------------------------------------------------------- /백준/Bronze/27323. 직사각형/직사각형.java: -------------------------------------------------------------------------------- 1 | import java.io.BufferedReader; 2 | import java.io.IOException; 3 | import java.io.InputStreamReader; 4 | 5 | public class Main { 6 | private static BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); 7 | 8 | public static void main(String[] args) throws IOException { 9 | int A = Integer.parseInt(bufferedReader.readLine()); 10 | int B = Integer.parseInt(bufferedReader.readLine()); 11 | System.out.println(A * B); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /백준/Bronze/2738. 행렬 덧셈/README.md: -------------------------------------------------------------------------------- 1 | # [Bronze V] 행렬 덧셈 - 2738 2 | 3 | [문제 링크](https://www.acmicpc.net/problem/2738) 4 | 5 | ### 성능 요약 6 | 7 | 메모리: 13700 KB, 시간: 124 ms 8 | 9 | ### 분류 10 | 11 | 구현, 수학 12 | 13 | ### 문제 설명 14 | 15 |N*M크기의 두 행렬 A와 B가 주어졌을 때, 두 행렬을 더하는 프로그램을 작성하시오.
16 | 17 | ### 입력 18 | 19 |첫째 줄에 행렬의 크기 N 과 M이 주어진다. 둘째 줄부터 N개의 줄에 행렬 A의 원소 M개가 차례대로 주어진다. 이어서 N개의 줄에 행렬 B의 원소 M개가 차례대로 주어진다. N과 M은 100보다 작거나 같고, 행렬의 원소는 절댓값이 100보다 작거나 같은 정수이다.
20 | 21 | ### 출력 22 | 23 |첫째 줄부터 N개의 줄에 행렬 A와 B를 더한 행렬을 출력한다. 행렬의 각 원소는 공백으로 구분한다.
24 | 25 | -------------------------------------------------------------------------------- /백준/Bronze/2739. 구구단/README.md: -------------------------------------------------------------------------------- 1 | # [Bronze V] 구구단 - 2739 2 | 3 | [문제 링크](https://www.acmicpc.net/problem/2739) 4 | 5 | ### 성능 요약 6 | 7 | 메모리: 11600 KB, 시간: 76 ms 8 | 9 | ### 분류 10 | 11 | 구현(implementation), 수학(math) 12 | 13 | ### 문제 설명 14 | 15 |N을 입력받은 뒤, 구구단 N단을 출력하는 프로그램을 작성하시오. 출력 형식에 맞춰서 출력하면 된다.
16 | 17 | ### 입력 18 | 19 |첫째 줄에 N이 주어진다. N은 1보다 크거나 같고, 9보다 작거나 같다.
20 | 21 | ### 출력 22 | 23 |출력형식과 같게 N*1부터 N*9까지 출력한다.
24 | 25 | -------------------------------------------------------------------------------- /백준/Bronze/2739. 구구단/구구단.java: -------------------------------------------------------------------------------- 1 | import java.io.*; 2 | 3 | public class Main { 4 | public static void main(String[] args) throws IOException { 5 | BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); 6 | int input = Integer.parseInt(reader.readLine()); 7 | 8 | StringBuilder result = new StringBuilder(); 9 | 10 | for (int x = 1; x < 10; x++) { 11 | result.append(input); 12 | result.append(" * "); 13 | result.append(x); 14 | result.append(" = "); 15 | result.append(input * x); 16 | if (x != 9) { 17 | result.append("\n"); 18 | } 19 | } 20 | 21 | BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(System.out)); 22 | writer.write(result.toString()); 23 | writer.flush(); 24 | writer.close(); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /백준/Bronze/2741. N 찍기/N 찍기.java: -------------------------------------------------------------------------------- 1 | import java.io.*; 2 | 3 | public class Main { 4 | public static void main(String[] args) throws IOException { 5 | BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); 6 | int input = Integer.parseInt(reader.readLine()); 7 | 8 | StringBuilder result = new StringBuilder(); 9 | 10 | for (int x = 1; x <= input; x++) { 11 | result.append(x); 12 | if (x != input) { 13 | result.append("\n"); 14 | } 15 | } 16 | 17 | BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(System.out)); 18 | writer.write(result.toString()); 19 | writer.flush(); 20 | writer.close(); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /백준/Bronze/2741. N 찍기/README.md: -------------------------------------------------------------------------------- 1 | # [Bronze V] N 찍기 - 2741 2 | 3 | [문제 링크](https://www.acmicpc.net/problem/2741) 4 | 5 | ### 성능 요약 6 | 7 | 메모리: 17248 KB, 시간: 168 ms 8 | 9 | ### 분류 10 | 11 | 구현(implementation) 12 | 13 | ### 문제 설명 14 | 15 |자연수 N이 주어졌을 때, 1부터 N까지 한 줄에 하나씩 출력하는 프로그램을 작성하시오.
16 | 17 | ### 입력 18 | 19 |첫째 줄에 100,000보다 작거나 같은 자연수 N이 주어진다.
20 | 21 | ### 출력 22 | 23 |첫째 줄부터 N번째 줄 까지 차례대로 출력한다.
24 | 25 | -------------------------------------------------------------------------------- /백준/Bronze/2743. 단어 길이 재기/README.md: -------------------------------------------------------------------------------- 1 | # [Bronze V] 단어 길이 재기 - 2743 2 | 3 | [문제 링크](https://www.acmicpc.net/problem/2743) 4 | 5 | ### 성능 요약 6 | 7 | 메모리: 11584 KB, 시간: 80 ms 8 | 9 | ### 분류 10 | 11 | 구현, 문자열 12 | 13 | ### 문제 설명 14 | 15 |알파벳으로만 이루어진 단어를 입력받아, 그 길이를 출력하는 프로그램을 작성하시오.
16 | 17 | ### 입력 18 | 19 |첫째 줄에 영어 소문자와 대문자로만 이루어진 단어가 주어진다. 단어의 길이는 최대 100이다.
20 | 21 | ### 출력 22 | 23 |첫째 줄에 입력으로 주어진 단어의 길이를 출력한다.
24 | 25 | -------------------------------------------------------------------------------- /백준/Bronze/2743. 단어 길이 재기/단어 길이 재기.java: -------------------------------------------------------------------------------- 1 | import java.io.*; 2 | 3 | public class Main { 4 | private static BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); 5 | private static BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(System.out)); 6 | 7 | public static void main(String[] args) throws IOException { 8 | String word = bufferedReader.readLine(); 9 | System.out.println(word.length()); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /백준/Bronze/27433. 팩토리얼 2/README.md: -------------------------------------------------------------------------------- 1 | # [Bronze V] 팩토리얼 2 - 27433 2 | 3 | [문제 링크](https://www.acmicpc.net/problem/27433) 4 | 5 | ### 성능 요약 6 | 7 | 메모리: 11580 KB, 시간: 76 ms 8 | 9 | ### 분류 10 | 11 | 사칙연산, 수학 12 | 13 | ### 문제 설명 14 | 15 |0보다 크거나 같은 정수 N이 주어진다. 이때, N!을 출력하는 프로그램을 작성하시오.
16 | 17 | ### 입력 18 | 19 |첫째 줄에 정수 N(0 ≤ N ≤ 20)이 주어진다.
20 | 21 | ### 출력 22 | 23 |첫째 줄에 N!을 출력한다.
24 | 25 | -------------------------------------------------------------------------------- /백준/Bronze/27433. 팩토리얼 2/팩토리얼 2.java: -------------------------------------------------------------------------------- 1 | import java.io.*; 2 | 3 | public class Main { 4 | private static BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); 5 | private static BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(System.out)); 6 | 7 | public static void main(String[] args) throws IOException { 8 | int N = Integer.parseInt(bufferedReader.readLine()); 9 | 10 | long result = 1; 11 | if (N != 0) { 12 | result = pivo(N); 13 | } 14 | bufferedWriter.write(String.valueOf(result)); 15 | bufferedWriter.flush(); 16 | bufferedWriter.close(); 17 | } 18 | 19 | private static long pivo(long number) { 20 | if (number == 1) { 21 | return number; 22 | } 23 | return number * pivo(number - 1); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /백준/Bronze/2745. 진법 변환/README.md: -------------------------------------------------------------------------------- 1 | # [Bronze II] 진법 변환 - 2745 2 | 3 | [문제 링크](https://www.acmicpc.net/problem/2745) 4 | 5 | ### 성능 요약 6 | 7 | 메모리: 14240 KB, 시간: 128 ms 8 | 9 | ### 분류 10 | 11 | 구현, 문자열, 수학 12 | 13 | ### 문제 설명 14 | 15 |B진법 수 N이 주어진다. 이 수를 10진법으로 바꿔 출력하는 프로그램을 작성하시오.
16 | 17 |10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 사용한다.
18 | 19 |A: 10, B: 11, ..., F: 15, ..., Y: 34, Z: 35
20 | 21 | ### 입력 22 | 23 |첫째 줄에 N과 B가 주어진다. (2 ≤ B ≤ 36)
24 | 25 |B진법 수 N을 10진법으로 바꾸면, 항상 10억보다 작거나 같다.
26 | 27 | ### 출력 28 | 29 |첫째 줄에 B진법 수 N을 10진법으로 출력한다.
30 | 31 | -------------------------------------------------------------------------------- /백준/Bronze/2745. 진법 변환/진법 변환.java: -------------------------------------------------------------------------------- 1 | import java.io.BufferedReader; 2 | import java.io.IOException; 3 | import java.io.InputStreamReader; 4 | import java.util.StringTokenizer; 5 | 6 | public class Main { 7 | private static BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); 8 | 9 | public static void main(String[] args) throws IOException { 10 | StringTokenizer line = new StringTokenizer(bufferedReader.readLine()); 11 | 12 | String N = line.nextToken(); 13 | int B = Integer.parseInt(line.nextToken()); 14 | 15 | System.out.println(Integer.parseInt(N,B)); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /백준/Bronze/2747. 피보나치 수/README.md: -------------------------------------------------------------------------------- 1 | # [Bronze II] 피보나치 수 - 2747 2 | 3 | [문제 링크](https://www.acmicpc.net/problem/2747) 4 | 5 | ### 성능 요약 6 | 7 | 메모리: 11576 KB, 시간: 80 ms 8 | 9 | ### 분류 10 | 11 | 구현(implementation), 수학(math) 12 | 13 | ### 문제 설명 14 | 15 |피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다.
16 | 17 |이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가 된다.
18 | 19 |n=17일때 까지 피보나치 수를 써보면 다음과 같다.
20 | 21 |0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597
22 | 23 |n이 주어졌을 때, n번째 피보나치 수를 구하는 프로그램을 작성하시오.
24 | 25 | ### 입력 26 | 27 |첫째 줄에 n이 주어진다. n은 45보다 작거나 같은 자연수이다.
28 | 29 | ### 출력 30 | 31 |첫째 줄에 n번째 피보나치 수를 출력한다.
32 | 33 | -------------------------------------------------------------------------------- /백준/Bronze/2747. 피보나치 수/피보나치 수.java: -------------------------------------------------------------------------------- 1 | import java.io.*; 2 | 3 | public class Main { 4 | public static void main(String[] args) throws IOException { 5 | BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); 6 | int count = Integer.parseInt(reader.readLine()); 7 | 8 | int a = 0; 9 | int b = 1; 10 | 11 | while(count-- > 0) { 12 | int tmp = a; 13 | a = b; 14 | b = tmp + b; 15 | } 16 | 17 | BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(System.out)); 18 | writer.write(Integer.toString(a)); 19 | writer.flush(); 20 | writer.close(); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /백준/Bronze/2750. 수 정렬하기/README.md: -------------------------------------------------------------------------------- 1 | # [Bronze II] 수 정렬하기 - 2750 2 | 3 | [문제 링크](https://www.acmicpc.net/problem/2750) 4 | 5 | ### 성능 요약 6 | 7 | 메모리: 12532 KB, 시간: 144 ms 8 | 9 | ### 분류 10 | 11 | 정렬, 구현 12 | 13 | ### 문제 설명 14 | 15 |N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오.
16 | 17 | ### 입력 18 | 19 |첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다.
20 | 21 | ### 출력 22 | 23 |첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다.
24 | 25 | -------------------------------------------------------------------------------- /백준/Bronze/2750. 수 정렬하기/수 정렬하기.java: -------------------------------------------------------------------------------- 1 | import java.io.*; 2 | import java.util.Arrays; 3 | 4 | public class Main { 5 | private static BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); 6 | 7 | public static void main(String[] args) throws IOException { 8 | int n = Integer.parseInt(bufferedReader.readLine()); 9 | int[] numbers = new int[n]; 10 | for (int i = 0; i < n; i++) { 11 | numbers[i] = Integer.parseInt(bufferedReader.readLine()); 12 | } 13 | Arrays.sort(numbers); 14 | for (int number : numbers) { 15 | System.out.println(number); 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /백준/Bronze/2869. 달팽이는 올라가고 싶다/README.md: -------------------------------------------------------------------------------- 1 | # [Bronze I] 달팽이는 올라가고 싶다 - 2869 2 | 3 | [문제 링크](https://www.acmicpc.net/problem/2869) 4 | 5 | ### 성능 요약 6 | 7 | 메모리: 11528 KB, 시간: 80 ms 8 | 9 | ### 분류 10 | 11 | 수학 12 | 13 | ### 문제 설명 14 | 15 |땅 위에 달팽이가 있다. 이 달팽이는 높이가 V미터인 나무 막대를 올라갈 것이다.
16 | 17 |달팽이는 낮에 A미터 올라갈 수 있다. 하지만, 밤에 잠을 자는 동안 B미터 미끄러진다. 또, 정상에 올라간 후에는 미끄러지지 않는다.
18 | 19 |달팽이가 나무 막대를 모두 올라가려면, 며칠이 걸리는지 구하는 프로그램을 작성하시오.
20 | 21 | ### 입력 22 | 23 |첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000)
24 | 25 | ### 출력 26 | 27 |첫째 줄에 달팽이가 나무 막대를 모두 올라가는데 며칠이 걸리는지 출력한다.
28 | 29 | -------------------------------------------------------------------------------- /백준/Bronze/2869. 달팽이는 올라가고 싶다/달팽이는 올라가고 싶다.java: -------------------------------------------------------------------------------- 1 | import java.io.BufferedReader; 2 | import java.io.IOException; 3 | import java.io.InputStreamReader; 4 | import java.util.StringTokenizer; 5 | 6 | public class Main { 7 | private static BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); 8 | 9 | public static void main(String[] args) throws IOException { 10 | StringTokenizer line = new StringTokenizer(bufferedReader.readLine()); 11 | 12 | int A = Integer.parseInt(line.nextToken()); // 낮에 올라가는 높이 13 | int B = Integer.parseInt(line.nextToken()); // 미끄러지는 높이 14 | int V = Integer.parseInt(line.nextToken()); // 높이 15 | 16 | int day = (int) Math.ceil((double)(V - A) / (double)(A - B)); 17 | System.out.println(day + 1); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /백준/Bronze/2884. 알람 시계/알람 시계.java: -------------------------------------------------------------------------------- 1 | import java.io.*; 2 | import java.util.StringTokenizer; 3 | 4 | public class Main { 5 | public static void main(String[] args) throws IOException { 6 | BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); 7 | StringTokenizer tokenizer = new StringTokenizer(reader.readLine()); 8 | int hour = Integer.parseInt(tokenizer.nextToken()); 9 | int min = Integer.parseInt(tokenizer.nextToken()); 10 | 11 | min -= 45; 12 | hour = min < 0 ? (hour - 1 < 0 ? 23 : hour - 1) : hour; 13 | min = min < 0 ? min + 60 : min; 14 | 15 | BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(System.out)); 16 | writer.write(Integer.toString(hour)); 17 | writer.write(" "); 18 | writer.write(Integer.toString(min)); 19 | writer.flush(); 20 | writer.close(); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /백준/Bronze/2903. 중앙 이동 알고리즘/중앙 이동 알고리즘.java: -------------------------------------------------------------------------------- 1 | import java.io.BufferedReader; 2 | import java.io.IOException; 3 | import java.io.InputStreamReader; 4 | 5 | public class Main { 6 | private static BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); 7 | 8 | public static void main(String[] args) throws IOException { 9 | int N = Integer.parseInt(bufferedReader.readLine()); 10 | 11 | int dots = 2; 12 | for (int i = 0; i < N; i++) { 13 | dots += (dots - 1); 14 | } 15 | 16 | System.out.println(dots * dots); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /백준/Bronze/3003. 킹, 퀸, 룩, 비숍, 나이트, 폰/README.md: -------------------------------------------------------------------------------- 1 | # [Bronze V] 킹, 퀸, 룩, 비숍, 나이트, 폰 - 3003 2 | 3 | [문제 링크](https://www.acmicpc.net/problem/3003) 4 | 5 | ### 성능 요약 6 | 7 | 메모리: 11596 KB, 시간: 80 ms 8 | 9 | ### 분류 10 | 11 | 구현, 사칙연산, 수학 12 | 13 | ### 문제 설명 14 | 15 |동혁이는 오래된 창고를 뒤지다가 낡은 체스판과 피스를 발견했다.
16 | 17 |체스판의 먼지를 털어내고 걸레로 닦으니 그럭저럭 쓸만한 체스판이 되었다. 하지만, 검정색 피스는 모두 있었으나, 흰색 피스는 개수가 올바르지 않았다.
18 | 19 |체스는 총 16개의 피스를 사용하며, 킹 1개, 퀸 1개, 룩 2개, 비숍 2개, 나이트 2개, 폰 8개로 구성되어 있다.
20 | 21 |동혁이가 발견한 흰색 피스의 개수가 주어졌을 때, 몇 개를 더하거나 빼야 올바른 세트가 되는지 구하는 프로그램을 작성하시오.
22 | 23 | ### 입력 24 | 25 |첫째 줄에 동혁이가 찾은 흰색 킹, 퀸, 룩, 비숍, 나이트, 폰의 개수가 주어진다. 이 값은 0보다 크거나 같고 10보다 작거나 같은 정수이다.
26 | 27 | ### 출력 28 | 29 |첫째 줄에 입력에서 주어진 순서대로 몇 개의 피스를 더하거나 빼야 되는지를 출력한다. 만약 수가 양수라면 동혁이는 그 개수 만큼 피스를 더해야 하는 것이고, 음수라면 제거해야 하는 것이다.
30 | 31 | -------------------------------------------------------------------------------- /백준/Bronze/3003. 킹, 퀸, 룩, 비숍, 나이트, 폰/킹, 퀸, 룩, 비숍, 나이트, 폰.java: -------------------------------------------------------------------------------- 1 | import java.io.*; 2 | import java.util.Arrays; 3 | import java.util.StringTokenizer; 4 | 5 | public class Main { 6 | private static BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); 7 | private static BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(System.out)); 8 | 9 | public static void main(String[] args) throws IOException { 10 | StringTokenizer pieces = new StringTokenizer(bufferedReader.readLine()); 11 | 12 | int[] allPieces = {1, 1, 2, 2, 2, 8}; 13 | 14 | for (int i = 0; i < 6; i++) { 15 | int piece = Integer.parseInt(pieces.nextToken()); 16 | 17 | bufferedWriter.write(allPieces[i] - piece + " "); 18 | } 19 | bufferedWriter.close(); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /백준/Bronze/3009. 네 번째 점/README.md: -------------------------------------------------------------------------------- 1 | # [Bronze III] 네 번째 점 - 3009 2 | 3 | [문제 링크](https://www.acmicpc.net/problem/3009) 4 | 5 | ### 성능 요약 6 | 7 | 메모리: 11476 KB, 시간: 76 ms 8 | 9 | ### 분류 10 | 11 | 기하학, 구현 12 | 13 | ### 문제 설명 14 | 15 |세 점이 주어졌을 때, 축에 평행한 직사각형을 만들기 위해서 필요한 네 번째 점을 찾는 프로그램을 작성하시오.
16 | 17 | ### 입력 18 | 19 |세 점의 좌표가 한 줄에 하나씩 주어진다. 좌표는 1보다 크거나 같고, 1000보다 작거나 같은 정수이다.
20 | 21 | ### 출력 22 | 23 |직사각형의 네 번째 점의 좌표를 출력한다.
24 | 25 | -------------------------------------------------------------------------------- /백준/Bronze/3052. 나머지/README.md: -------------------------------------------------------------------------------- 1 | # [Bronze II] 나머지 - 3052 2 | 3 | [문제 링크](https://www.acmicpc.net/problem/3052) 4 | 5 | ### 성능 요약 6 | 7 | 메모리: 11588 KB, 시간: 76 ms 8 | 9 | ### 분류 10 | 11 | 사칙연산(arithmetic), 수학(math) 12 | 13 | -------------------------------------------------------------------------------- /백준/Bronze/3052. 나머지/나머지.java: -------------------------------------------------------------------------------- 1 | import java.io.*; 2 | import java.util.HashSet; 3 | import java.util.Set; 4 | 5 | public class Main { 6 | public static void main(String[] args) throws IOException { 7 | BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); 8 | 9 | Set대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다. 당신은 그들에게 슬픈 진실을 알려줘야 한다.
16 | 17 | ### 입력 18 | 19 |첫째 줄에는 테스트 케이스의 개수 C가 주어진다.
20 | 21 |둘째 줄부터 각 테스트 케이스마다 학생의 수 N(1 ≤ N ≤ 1000, N은 정수)이 첫 수로 주어지고, 이어서 N명의 점수가 주어진다. 점수는 0보다 크거나 같고, 100보다 작거나 같은 정수이다.
22 | 23 | ### 출력 24 | 25 |각 케이스마다 한 줄씩 평균을 넘는 학생들의 비율을 반올림하여 소수점 셋째 자리까지 출력한다. 정답과 출력값의 절대/상대 오차는 10-3이하이면 정답이다.
26 | 27 | -------------------------------------------------------------------------------- /백준/Bronze/5073. 삼각형과 세 변/README.md: -------------------------------------------------------------------------------- 1 | # [Bronze III] 삼각형과 세 변 - 5073 2 | 3 | [문제 링크](https://www.acmicpc.net/problem/5073) 4 | 5 | ### 성능 요약 6 | 7 | 메모리: 11648 KB, 시간: 76 ms 8 | 9 | ### 분류 10 | 11 | 기하학, 구현, 수학 12 | 13 | ### 문제 설명 14 | 15 |삼각형의 세 변의 길이가 주어질 때 변의 길이에 따라 다음과 같이 정의한다.
16 | 17 |단 주어진 세 변의 길이가 삼각형의 조건을 만족하지 못하는 경우에는 "Invalid" 를 출력한다. 예를 들어 6, 3, 2가 이 경우에 해당한다. 가장 긴 변의 길이보다 나머지 두 변의 길이의 합이 길지 않으면 삼각형의 조건을 만족하지 못한다.
24 | 25 |세 변의 길이가 주어질 때 위 정의에 따른 결과를 출력하시오.
26 | 27 | ### 입력 28 | 29 |각 줄에는 1,000을 넘지 않는 양의 정수 3개가 입력된다. 마지막 줄은 0 0 0이며 이 줄은 계산하지 않는다.
30 | 31 | ### 출력 32 | 33 |각 입력에 맞는 결과 (Equilateral, Isosceles, Scalene, Invalid) 를 출력하시오.
34 | 35 | -------------------------------------------------------------------------------- /백준/Bronze/5086. 배수와 약수/README.md: -------------------------------------------------------------------------------- 1 | # [Bronze III] 배수와 약수 - 5086 2 | 3 | [문제 링크](https://www.acmicpc.net/problem/5086) 4 | 5 | ### 성능 요약 6 | 7 | 메모리: 11388 KB, 시간: 72 ms 8 | 9 | ### 분류 10 | 11 | 사칙연산, 수학 12 | 13 | ### 문제 설명 14 | 15 |4 × 3 = 12이다.
16 | 17 |이 식을 통해 다음과 같은 사실을 알 수 있다.
18 | 19 |3은 12의 약수이고, 12는 3의 배수이다.
20 | 21 |4도 12의 약수이고, 12는 4의 배수이다.
22 | 23 |두 수가 주어졌을 때, 다음 3가지 중 어떤 관계인지 구하는 프로그램을 작성하시오.
24 | 25 |입력은 여러 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 10,000이 넘지않는 두 자연수로 이루어져 있다. 마지막 줄에는 0이 2개 주어진다. 두 수가 같은 경우는 없다.
34 | 35 | ### 출력 36 | 37 |각 테스트 케이스마다 첫 번째 숫자가 두 번째 숫자의 약수라면 factor를, 배수라면 multiple을, 둘 다 아니라면 neither를 출력한다.
38 | 39 | -------------------------------------------------------------------------------- /백준/Bronze/8393. 합/README.md: -------------------------------------------------------------------------------- 1 | # [Bronze V] 합 - 8393 2 | 3 | [문제 링크](https://www.acmicpc.net/problem/8393) 4 | 5 | ### 성능 요약 6 | 7 | 메모리: 11472 KB, 시간: 72 ms 8 | 9 | ### 분류 10 | 11 | 구현, 수학 12 | 13 | ### 문제 설명 14 | 15 |n이 주어졌을 때, 1부터 n까지 합을 구하는 프로그램을 작성하시오.
16 | 17 | ### 입력 18 | 19 |첫째 줄에 n (1 ≤ n ≤ 10,000)이 주어진다.
20 | 21 | ### 출력 22 | 23 |1부터 n까지 합을 출력한다.
24 | 25 | -------------------------------------------------------------------------------- /백준/Bronze/8393. 합/합.java: -------------------------------------------------------------------------------- 1 | import java.io.*; 2 | 3 | public class Main { 4 | private static BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); 5 | 6 | public static void main(String[] args) throws IOException { 7 | int n = Integer.parseInt(bufferedReader.readLine()); 8 | 9 | long result = 0; 10 | for (int i = 1; i <= n; i++) { 11 | result += i; 12 | } 13 | System.out.println(result); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /백준/Bronze/8958. OX퀴즈/OX퀴즈.kt: -------------------------------------------------------------------------------- 1 | import java.io.BufferedReader 2 | import java.io.InputStreamReader 3 | 4 | fun main() = with(BufferedReader(InputStreamReader(System.`in`))) { 5 | val len = readLine().toInt() 6 | 7 | for (i in 0 until len) { 8 | val case = readLine() 9 | var score = 0 10 | var chain = 1 11 | for (j in case) { 12 | if (j == 'O') { 13 | score += chain 14 | chain++ 15 | } else { 16 | chain = 1 17 | } 18 | } 19 | println(score) 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /백준/Bronze/8958. OX퀴즈/README.md: -------------------------------------------------------------------------------- 1 | # [Bronze II] OX퀴즈 - 8958 2 | 3 | [문제 링크](https://www.acmicpc.net/problem/8958) 4 | 5 | ### 성능 요약 6 | 7 | 메모리: 12340 KB, 시간: 100 ms 8 | 9 | ### 분류 10 | 11 | 구현(implementation), 문자열(string) 12 | 13 | ### 문제 설명 14 | 15 |"OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, 10번 문제의 점수는 3이 된다.
16 | 17 |"OOXXOXXOOO"의 점수는 1+2+0+0+1+0+0+1+2+3 = 10점이다.
18 | 19 |OX퀴즈의 결과가 주어졌을 때, 점수를 구하는 프로그램을 작성하시오.
20 | 21 | ### 입력 22 | 23 |첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 길이가 0보다 크고 80보다 작은 문자열이 주어진다. 문자열은 O와 X만으로 이루어져 있다.
24 | 25 | ### 출력 26 | 27 |각 테스트 케이스마다 점수를 출력한다.
28 | 29 | -------------------------------------------------------------------------------- /백준/Bronze/9506. 약수들의 합/README.md: -------------------------------------------------------------------------------- 1 | # [Bronze I] 약수들의 합 - 9506 2 | 3 | [문제 링크](https://www.acmicpc.net/problem/9506) 4 | 5 | ### 성능 요약 6 | 7 | 메모리: 11668 KB, 시간: 76 ms 8 | 9 | ### 분류 10 | 11 | 구현, 수학, 정수론 12 | 13 | ### 문제 설명 14 | 15 |어떤 숫자 n이 자신을 제외한 모든 약수들의 합과 같으면, 그 수를 완전수라고 한다.
16 | 17 |예를 들어 6은 6 = 1 + 2 + 3 으로 완전수이다.
18 | 19 |n이 완전수인지 아닌지 판단해주는 프로그램을 작성하라.
20 | 21 | ### 입력 22 | 23 |입력은 테스트 케이스마다 한 줄 간격으로 n이 주어진다. (2 < n < 100,000)
24 | 25 |입력의 마지막엔 -1이 주어진다.
26 | 27 | ### 출력 28 | 29 |테스트케이스 마다 한줄에 하나씩 출력해야 한다.
30 | 31 |n이 완전수라면, n을 n이 아닌 약수들의 합으로 나타내어 출력한다(예제 출력 참고).
32 | 33 |이때, 약수들은 오름차순으로 나열해야 한다.
34 | 35 |n이 완전수가 아니라면 n is NOT perfect. 를 출력한다.
36 | 37 | -------------------------------------------------------------------------------- /백준/Gold/17298. 오큰수/README.md: -------------------------------------------------------------------------------- 1 | # [Gold IV] 오큰수 - 17298 2 | 3 | [문제 링크](https://www.acmicpc.net/problem/17298) 4 | 5 | ### 성능 요약 6 | 7 | 메모리: 199088 KB, 시간: 948 ms 8 | 9 | ### 분류 10 | 11 | 자료 구조, 스택 12 | 13 | ### 문제 설명 14 | 15 |크기가 N인 수열 A = A1, A2, ..., AN이 있다. 수열의 각 원소 Ai에 대해서 오큰수 NGE(i)를 구하려고 한다. Ai의 오큰수는 오른쪽에 있으면서 Ai보다 큰 수 중에서 가장 왼쪽에 있는 수를 의미한다. 그러한 수가 없는 경우에 오큰수는 -1이다.
16 | 17 |예를 들어, A = [3, 5, 2, 7]인 경우 NGE(1) = 5, NGE(2) = 7, NGE(3) = 7, NGE(4) = -1이다. A = [9, 5, 4, 8]인 경우에는 NGE(1) = -1, NGE(2) = 8, NGE(3) = 8, NGE(4) = -1이다.
18 | 19 | ### 입력 20 | 21 |첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에 수열 A의 원소 A1, A2, ..., AN (1 ≤ Ai ≤ 1,000,000)이 주어진다.
22 | 23 | ### 출력 24 | 25 |총 N개의 수 NGE(1), NGE(2), ..., NGE(N)을 공백으로 구분해 출력한다.
26 | 27 | -------------------------------------------------------------------------------- /백준/Silver/1065. 한수/README.md: -------------------------------------------------------------------------------- 1 | # [Silver IV] 한수 - 1065 2 | 3 | [문제 링크](https://www.acmicpc.net/problem/1065) 4 | 5 | ### 성능 요약 6 | 7 | 메모리: 11584 KB, 시간: 84 ms 8 | 9 | ### 분류 10 | 11 | 브루트포스 알고리즘(bruteforcing) 12 | 13 | ### 문제 설명 14 | 15 |어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력하는 프로그램을 작성하시오.
16 | 17 | ### 입력 18 | 19 |첫째 줄에 1,000보다 작거나 같은 자연수 N이 주어진다.
20 | 21 | ### 출력 22 | 23 |첫째 줄에 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력한다.
24 | 25 | -------------------------------------------------------------------------------- /백준/Silver/10773. 제로/README.md: -------------------------------------------------------------------------------- 1 | # [Silver IV] 제로 - 10773 2 | 3 | [문제 링크](https://www.acmicpc.net/problem/10773) 4 | 5 | ### 성능 요약 6 | 7 | 메모리: 21924 KB, 시간: 196 ms 8 | 9 | ### 분류 10 | 11 | 자료 구조(data_structures), 구현(implementation), 스택(stack) 12 | 13 | ### 문제 설명 14 | 15 |나코더 기장 재민이는 동아리 회식을 준비하기 위해서 장부를 관리하는 중이다.
16 | 17 |재현이는 재민이를 도와서 돈을 관리하는 중인데, 애석하게도 항상 정신없는 재현이는 돈을 실수로 잘못 부르는 사고를 치기 일쑤였다.
18 | 19 |재현이는 잘못된 수를 부를 때마다 0을 외쳐서, 가장 최근에 재민이가 쓴 수를 지우게 시킨다.
20 | 21 |재민이는 이렇게 모든 수를 받아 적은 후 그 수의 합을 알고 싶어 한다. 재민이를 도와주자!
22 | 23 | ### 입력 24 | 25 |첫 번째 줄에 정수 K가 주어진다. (1 ≤ K ≤ 100,000)
26 | 27 |이후 K개의 줄에 정수가 1개씩 주어진다. 정수는 0에서 1,000,000 사이의 값을 가지며, 정수가 "0" 일 경우에는 가장 최근에 쓴 수를 지우고, 아닐 경우 해당 수를 쓴다.
28 | 29 |정수가 "0"일 경우에 지울 수 있는 수가 있음을 보장할 수 있다.
30 | 31 | ### 출력 32 | 33 |재민이가 최종적으로 적어 낸 수의 합을 출력한다. 최종적으로 적어낸 수의 합은 231-1보다 작거나 같은 정수이다.
34 | 35 | -------------------------------------------------------------------------------- /백준/Silver/10773. 제로/제로.java: -------------------------------------------------------------------------------- 1 | import java.io.*; 2 | import java.util.Stack; 3 | 4 | public class Main { 5 | public static void main(String[] args) throws IOException { 6 | BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); 7 | 8 | int K = Integer.parseInt(reader.readLine()); // 앞으로 입력될 수 9 | 10 | Stack숫자 카드는 정수 하나가 적혀져 있는 카드이다. 상근이는 숫자 카드 N개를 가지고 있다. 정수 M개가 주어졌을 때, 이 수가 적혀있는 숫자 카드를 상근이가 가지고 있는지 아닌지를 구하는 프로그램을 작성하시오.
16 | 17 | ### 입력 18 | 19 |첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10,000,000보다 작거나 같다. 두 숫자 카드에 같은 수가 적혀있는 경우는 없다.
20 | 21 |셋째 줄에는 M(1 ≤ M ≤ 500,000)이 주어진다. 넷째 줄에는 상근이가 가지고 있는 숫자 카드인지 아닌지를 구해야 할 M개의 정수가 주어지며, 이 수는 공백으로 구분되어져 있다. 이 수도 -10,000,000보다 크거나 같고, 10,000,000보다 작거나 같다
22 | 23 | ### 출력 24 | 25 |첫째 줄에 입력으로 주어진 M개의 수에 대해서, 각 수가 적힌 숫자 카드를 상근이가 가지고 있으면 1을, 아니면 0을 공백으로 구분해 출력한다.
26 | 27 | -------------------------------------------------------------------------------- /백준/Silver/10816. 숫자 카드 2/README.md: -------------------------------------------------------------------------------- 1 | # [Silver IV] 숫자 카드 2 - 10816 2 | 3 | [문제 링크](https://www.acmicpc.net/problem/10816) 4 | 5 | ### 성능 요약 6 | 7 | 메모리: 264836 KB, 시간: 1232 ms 8 | 9 | ### 분류 10 | 11 | 이분 탐색, 자료 구조, 해시를 사용한 집합과 맵, 정렬 12 | 13 | ### 문제 설명 14 | 15 |숫자 카드는 정수 하나가 적혀져 있는 카드이다. 상근이는 숫자 카드 N개를 가지고 있다. 정수 M개가 주어졌을 때, 이 수가 적혀있는 숫자 카드를 상근이가 몇 개 가지고 있는지 구하는 프로그램을 작성하시오.
16 | 17 | ### 입력 18 | 19 |첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10,000,000보다 작거나 같다.
20 | 21 |셋째 줄에는 M(1 ≤ M ≤ 500,000)이 주어진다. 넷째 줄에는 상근이가 몇 개 가지고 있는 숫자 카드인지 구해야 할 M개의 정수가 주어지며, 이 수는 공백으로 구분되어져 있다. 이 수도 -10,000,000보다 크거나 같고, 10,000,000보다 작거나 같다.
22 | 23 | ### 출력 24 | 25 |첫째 줄에 입력으로 주어진 M개의 수에 대해서, 각 수가 적힌 숫자 카드를 상근이가 몇 개 가지고 있는지를 공백으로 구분해 출력한다.
26 | 27 | -------------------------------------------------------------------------------- /백준/Silver/10828. 스택/README.md: -------------------------------------------------------------------------------- 1 | # [Silver IV] 스택 - 10828 2 | 3 | [문제 링크](https://www.acmicpc.net/problem/10828) 4 | 5 | ### 성능 요약 6 | 7 | 메모리: 29380 KB, 시간: 156 ms 8 | 9 | ### 분류 10 | 11 | 자료 구조(data_structures), 스택(stack) 12 | 13 | ### 문제 설명 14 | 15 |정수를 저장하는 스택을 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램을 작성하시오.
16 | 17 |명령은 총 다섯 가지이다.
18 | 19 |첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 않은 명령이 주어지는 경우는 없다.
30 | 31 | ### 출력 32 | 33 |출력해야하는 명령이 주어질 때마다, 한 줄에 하나씩 출력한다.
34 | 35 | -------------------------------------------------------------------------------- /백준/Silver/10828. 스택/스택.py: -------------------------------------------------------------------------------- 1 | import sys 2 | def pop (stackList) : 3 | if len(stackList) > 0 : 4 | return stackList.pop() 5 | return -1 6 | 7 | def size(stackList) : 8 | return len(stackList) 9 | 10 | def empty(stackList) : 11 | if len(stackList) > 0 : 12 | return 0 13 | return 1 14 | 15 | def top(stackList) : 16 | if len(stackList) > 0 : 17 | return stackList[-1] 18 | return -1 19 | 20 | a = sys.stdin.readline().split() 21 | stackList = [] 22 | for i in range(0, int(a[0])) : 23 | b = sys.stdin.readline().split() 24 | if b[0] =='push' : 25 | stackList.append(b[1]) 26 | else : 27 | c = b[0]+'(stackList)' 28 | print(eval(c)) -------------------------------------------------------------------------------- /백준/Silver/11279. 최대 힙/README.md: -------------------------------------------------------------------------------- 1 | # [Silver II] 최대 힙 - 11279 2 | 3 | [문제 링크](https://www.acmicpc.net/problem/11279) 4 | 5 | ### 성능 요약 6 | 7 | 메모리: 27160 KB, 시간: 344 ms 8 | 9 | ### 분류 10 | 11 | 자료 구조, 우선순위 큐 12 | 13 | ### 문제 설명 14 | 15 |널리 잘 알려진 자료구조 중 최대 힙이 있다. 최대 힙을 이용하여 다음과 같은 연산을 지원하는 프로그램을 작성하시오.
16 | 17 |프로그램은 처음에 비어있는 배열에서 시작하게 된다.
23 | 24 | ### 입력 25 | 26 |첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0이라면 배열에서 가장 큰 값을 출력하고 그 값을 배열에서 제거하는 경우이다. 입력되는 자연수는 231보다 작다.
27 | 28 | ### 출력 29 | 30 |입력에서 0이 주어진 횟수만큼 답을 출력한다. 만약 배열이 비어 있는 경우인데 가장 큰 값을 출력하라고 한 경우에는 0을 출력하면 된다.
31 | 32 | -------------------------------------------------------------------------------- /백준/Silver/11286. 절댓값 힙/README.md: -------------------------------------------------------------------------------- 1 | # [Silver I] 절댓값 힙 - 11286 2 | 3 | [문제 링크](https://www.acmicpc.net/problem/11286) 4 | 5 | ### 성능 요약 6 | 7 | 메모리: 25204 KB, 시간: 336 ms 8 | 9 | ### 분류 10 | 11 | 자료 구조, 우선순위 큐 12 | 13 | ### 문제 설명 14 | 15 |절댓값 힙은 다음과 같은 연산을 지원하는 자료구조이다.
16 | 17 |프로그램은 처음에 비어있는 배열에서 시작하게 된다.
23 | 24 | ### 입력 25 | 26 |첫째 줄에 연산의 개수 N(1≤N≤100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 0이 아니라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0이라면 배열에서 절댓값이 가장 작은 값을 출력하고 그 값을 배열에서 제거하는 경우이다. 입력되는 정수는 -231보다 크고, 231보다 작다.
27 | 28 | ### 출력 29 | 30 |입력에서 0이 주어진 회수만큼 답을 출력한다. 만약 배열이 비어 있는 경우인데 절댓값이 가장 작은 값을 출력하라고 한 경우에는 0을 출력하면 된다.
31 | 32 | -------------------------------------------------------------------------------- /백준/Silver/11478. 서로 다른 부분 문자열의 개수/README.md: -------------------------------------------------------------------------------- 1 | # [Silver III] 서로 다른 부분 문자열의 개수 - 11478 2 | 3 | [문제 링크](https://www.acmicpc.net/problem/11478) 4 | 5 | ### 성능 요약 6 | 7 | 메모리: 564692 KB, 시간: 1000 ms 8 | 9 | ### 분류 10 | 11 | 자료 구조, 해시를 사용한 집합과 맵, 문자열, 트리를 사용한 집합과 맵 12 | 13 | ### 문제 설명 14 | 15 |문자열 S가 주어졌을 때, S의 서로 다른 부분 문자열의 개수를 구하는 프로그램을 작성하시오.
16 | 17 |부분 문자열은 S에서 연속된 일부분을 말하며, 길이가 1보다 크거나 같아야 한다.
18 | 19 |예를 들어, ababc의 부분 문자열은 a, b, a, b, c, ab, ba, ab, bc, aba, bab, abc, abab, babc, ababc가 있고, 서로 다른것의 개수는 12개이다.
20 | 21 | ### 입력 22 | 23 |첫째 줄에 문자열 S가 주어진다. S는 알파벳 소문자로만 이루어져 있고, 길이는 1,000 이하이다.
24 | 25 | ### 출력 26 | 27 |첫째 줄에 S의 서로 다른 부분 문자열의 개수를 출력한다.
28 | 29 | -------------------------------------------------------------------------------- /백준/Silver/11478. 서로 다른 부분 문자열의 개수/서로 다른 부분 문자열의 개수.java: -------------------------------------------------------------------------------- 1 | import java.io.*; 2 | import java.util.*; 3 | 4 | public class Main { 5 | private static BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); 6 | private static BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(System.out)); 7 | 8 | public static void main(String[] args) throws IOException { 9 | String S = bufferedReader.readLine(); 10 | 11 | Set요세푸스 문제는 다음과 같다.
16 | 17 |1번부터 N번까지 N명의 사람이 원을 이루면서 앉아있고, 양의 정수 K(≤ N)가 주어진다. 이제 순서대로 K번째 사람을 제거한다. 한 사람이 제거되면 남은 사람들로 이루어진 원을 따라 이 과정을 계속해 나간다. 이 과정은 N명의 사람이 모두 제거될 때까지 계속된다. 원에서 사람들이 제거되는 순서를 (N, K)-요세푸스 순열이라고 한다. 예를 들어 (7, 3)-요세푸스 순열은 <3, 6, 2, 7, 5, 1, 4>이다.
18 | 19 |N과 K가 주어지면 (N, K)-요세푸스 순열을 구하는 프로그램을 작성하시오.
20 | 21 | ### 입력 22 | 23 |첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000)
24 | 25 | ### 출력 26 | 27 |예제와 같이 요세푸스 순열을 출력한다.
28 | 29 | -------------------------------------------------------------------------------- /백준/Silver/1158. 요세푸스 문제/요세푸스 문제.py: -------------------------------------------------------------------------------- 1 | import sys 2 | from collections import deque 3 | 4 | n_k = sys.stdin.readline().split() 5 | # 사람 수 6 | n = int(n_k[0]) 7 | # 빠질 번호 8 | k = int(n_k[1]) 9 | 10 | myDeque = deque() 11 | for i in range(1, n + 1) : 12 | myDeque.append(i) 13 | 14 | resultList = [] 15 | 16 | num = 1 17 | 18 | # myDeque 끝날때까지 반복 19 | while len(myDeque) > 0 : 20 | # 만약 3의 배수번이라면 해당 수를 뺀다. 21 | if num % k == 0 : 22 | resultList.append(myDeque.popleft()) 23 | else : 24 | myDeque.append(myDeque.popleft()) 25 | num += 1 26 | 27 | result = "<" 28 | for i in resultList : 29 | result += str(i) 30 | if (i != resultList[-1]) : 31 | result += ", " 32 | result += ">" 33 | print(result) -------------------------------------------------------------------------------- /백준/Silver/11650. 좌표 정렬하기/README.md: -------------------------------------------------------------------------------- 1 | # [Silver V] 좌표 정렬하기 - 11650 2 | 3 | [문제 링크](https://www.acmicpc.net/problem/11650) 4 | 5 | ### 성능 요약 6 | 7 | 메모리: 58408 KB, 시간: 680 ms 8 | 9 | ### 분류 10 | 11 | 정렬 12 | 13 | ### 문제 설명 14 | 15 |2차원 평면 위의 점 N개가 주어진다. 좌표를 x좌표가 증가하는 순으로, x좌표가 같으면 y좌표가 증가하는 순서로 정렬한 다음 출력하는 프로그램을 작성하시오.
16 | 17 | ### 입력 18 | 19 |첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다.
20 | 21 | ### 출력 22 | 23 |첫째 줄부터 N개의 줄에 점을 정렬한 결과를 출력한다.
24 | 25 | -------------------------------------------------------------------------------- /백준/Silver/11651. 좌표 정렬하기 2/README.md: -------------------------------------------------------------------------------- 1 | # [Silver V] 좌표 정렬하기 2 - 11651 2 | 3 | [문제 링크](https://www.acmicpc.net/problem/11651) 4 | 5 | ### 성능 요약 6 | 7 | 메모리: 57400 KB, 시간: 628 ms 8 | 9 | ### 분류 10 | 11 | 정렬 12 | 13 | ### 문제 설명 14 | 15 |2차원 평면 위의 점 N개가 주어진다. 좌표를 y좌표가 증가하는 순으로, y좌표가 같으면 x좌표가 증가하는 순서로 정렬한 다음 출력하는 프로그램을 작성하시오.
16 | 17 | ### 입력 18 | 19 |첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다.
20 | 21 | ### 출력 22 | 23 |첫째 줄부터 N개의 줄에 점을 정렬한 결과를 출력한다.
24 | 25 | -------------------------------------------------------------------------------- /백준/Silver/11726. 2×n 타일링/README.md: -------------------------------------------------------------------------------- 1 | # [Silver III] 2×n 타일링 - 11726 2 | 3 | [문제 링크](https://www.acmicpc.net/problem/11726) 4 | 5 | ### 성능 요약 6 | 7 | 메모리: 11604 KB, 시간: 76 ms 8 | 9 | ### 분류 10 | 11 | 다이나믹 프로그래밍(dp) 12 | 13 | -------------------------------------------------------------------------------- /백준/Silver/11866. 요세푸스 문제 0/README.md: -------------------------------------------------------------------------------- 1 | # [Silver V] 요세푸스 문제 0 - 11866 2 | 3 | [문제 링크](https://www.acmicpc.net/problem/11866) 4 | 5 | ### 성능 요약 6 | 7 | 메모리: 43404 KB, 시간: 164 ms 8 | 9 | ### 분류 10 | 11 | 자료 구조(data_structures), 구현(implementation), 큐(queue) 12 | 13 | ### 문제 설명 14 | 15 |요세푸스 문제는 다음과 같다.
16 | 17 |1번부터 N번까지 N명의 사람이 원을 이루면서 앉아있고, 양의 정수 K(≤ N)가 주어진다. 이제 순서대로 K번째 사람을 제거한다. 한 사람이 제거되면 남은 사람들로 이루어진 원을 따라 이 과정을 계속해 나간다. 이 과정은 N명의 사람이 모두 제거될 때까지 계속된다. 원에서 사람들이 제거되는 순서를 (N, K)-요세푸스 순열이라고 한다. 예를 들어 (7, 3)-요세푸스 순열은 <3, 6, 2, 7, 5, 1, 4>이다.
18 | 19 |N과 K가 주어지면 (N, K)-요세푸스 순열을 구하는 프로그램을 작성하시오.
20 | 21 | ### 입력 22 | 23 |첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 1,000)
24 | 25 | ### 출력 26 | 27 |예제와 같이 요세푸스 순열을 출력한다.
28 | 29 | -------------------------------------------------------------------------------- /백준/Silver/1193. 분수찾기/분수찾기.java: -------------------------------------------------------------------------------- 1 | import java.io.BufferedReader; 2 | import java.io.IOException; 3 | import java.io.InputStreamReader; 4 | import java.util.StringTokenizer; 5 | 6 | public class Main { 7 | private static BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); 8 | 9 | public static void main(String[] args) throws IOException { 10 | int X = Integer.parseInt(bufferedReader.readLine()); 11 | int n = 0; 12 | while(n * (n + 1) < 2 * X) { 13 | n++; 14 | } 15 | int k = n * (n + 1) / 2; 16 | int a = 1; 17 | int b = n; 18 | while (k > X) { 19 | k--; 20 | a++; 21 | b--; 22 | } 23 | if (n % 2 == 1) { 24 | System.out.println(a + "/" + b); 25 | } else { 26 | System.out.println(b + "/" + a); 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /백준/Silver/1269. 대칭 차집합/README.md: -------------------------------------------------------------------------------- 1 | # [Silver III] 대칭 차집합 - 1269 2 | 3 | [문제 링크](https://www.acmicpc.net/problem/1269) 4 | 5 | ### 성능 요약 6 | 7 | 메모리: 74832 KB, 시간: 580 ms 8 | 9 | ### 분류 10 | 11 | 자료 구조(data_structures), 해시를 사용한 집합과 맵(hash_set), 트리를 사용한 집합과 맵(tree_set) 12 | 13 | ### 문제 설명 14 | 15 |자연수를 원소로 갖는 공집합이 아닌 두 집합 A와 B가 있다. 이때, 두 집합의 대칭 차집합의 원소의 개수를 출력하는 프로그램을 작성하시오. 두 집합 A와 B가 있을 때, (A-B)와 (B-A)의 합집합을 A와 B의 대칭 차집합이라고 한다.
16 |예를 들어, A = { 1, 2, 4 } 이고, B = { 2, 3, 4, 5, 6 } 라고 할 때, A-B = { 1 } 이고, B-A = { 3, 5, 6 } 이므로, 대칭 차집합의 원소의 개수는 1 + 3 = 4개이다.
17 | 18 | ### 입력 19 | 20 |첫째 줄에 집합 A의 원소의 개수와 집합 B의 원소의 개수가 빈 칸을 사이에 두고 주어진다. 둘째 줄에는 집합 A의 모든 원소가, 셋째 줄에는 집합 B의 모든 원소가 빈 칸을 사이에 두고 각각 주어진다. 각 집합의 원소의 개수는 200,000을 넘지 않으며, 모든 원소의 값은 100,000,000을 넘지 않는다.
21 | 22 | ### 출력 23 | 24 |첫째 줄에 대칭 차집합의 원소의 개수를 출력한다.
25 | 26 | -------------------------------------------------------------------------------- /백준/Silver/1316. 그룹 단어 체커/README.md: -------------------------------------------------------------------------------- 1 | # [Silver V] 그룹 단어 체커 - 1316 2 | 3 | [문제 링크](https://www.acmicpc.net/problem/1316) 4 | 5 | ### 성능 요약 6 | 7 | 메모리: 11612 KB, 시간: 80 ms 8 | 9 | ### 분류 10 | 11 | 구현, 문자열 12 | 13 | ### 문제 설명 14 | 15 |그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때문에 그룹 단어이지만, aabbbccb는 b가 떨어져서 나타나기 때문에 그룹 단어가 아니다.
16 | 17 |단어 N개를 입력으로 받아 그룹 단어의 개수를 출력하는 프로그램을 작성하시오.
18 | 19 | ### 입력 20 | 21 |첫째 줄에 단어의 개수 N이 들어온다. N은 100보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에 단어가 들어온다. 단어는 알파벳 소문자로만 되어있고 중복되지 않으며, 길이는 최대 100이다.
22 | 23 | ### 출력 24 | 25 |첫째 줄에 그룹 단어의 개수를 출력한다.
26 | 27 | -------------------------------------------------------------------------------- /백준/Silver/13909. 창문 닫기/README.md: -------------------------------------------------------------------------------- 1 | # [Silver V] 창문 닫기 - 13909 2 | 3 | [문제 링크](https://www.acmicpc.net/problem/13909) 4 | 5 | ### 성능 요약 6 | 7 | 메모리: 11564 KB, 시간: 80 ms 8 | 9 | ### 분류 10 | 11 | 수학, 정수론 12 | 13 | ### 문제 설명 14 | 15 |서강대학교 컴퓨터공학과 실습실 R912호에는 현재 N개의 창문이 있고 또 N명의 사람이 있다. 1번째 사람은 1의 배수 번째 창문을 열려 있으면 닫고 닫혀 있으면 연다. 2번째 사람은 2의 배수 번째 창문을 열려 있으면 닫고 닫혀 있으면 연다. 이러한 행동을 N번째 사람까지 진행한 후 열려 있는 창문의 개수를 구하라. 단, 처음에 모든 창문은 닫혀 있다.
16 | 17 |예를 들어 현재 3개의 창문이 있고 3명의 사람이 있을 때,
18 | 19 |결과적으로 마지막에 열려 있는 창문의 개수는 1개 이다.
26 | 27 | ### 입력 28 | 29 |첫 번째 줄에는 창문의 개수와 사람의 수 N(1 ≤ N ≤ 2,100,000,000)이 주어진다.
30 | 31 | ### 출력 32 | 33 |마지막에 열려 있는 창문의 개수를 출력한다.
34 | 35 | -------------------------------------------------------------------------------- /백준/Silver/13909. 창문 닫기/창문 닫기.java: -------------------------------------------------------------------------------- 1 | import java.io.*; 2 | 3 | public class Main { 4 | private static BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); 5 | private static BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(System.out)); 6 | 7 | public static void main(String[] args) throws IOException { 8 | int N = Integer.parseInt(bufferedReader.readLine()); 9 | 10 | int result = 1; 11 | while (result * result <= N) { 12 | result++; 13 | } 14 | bufferedWriter.write(--result + "\n"); 15 | bufferedWriter.flush(); 16 | bufferedWriter.close(); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /백준/Silver/1436. 영화감독 숌/영화감독 숌.java: -------------------------------------------------------------------------------- 1 | import java.io.*; 2 | 3 | public class Main { 4 | private static BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); 5 | 6 | public static void main(String[] args) throws IOException { 7 | int n = Integer.parseInt(bufferedReader.readLine()); 8 | int idx = 1; 9 | int result = 666; 10 | while(idx != n) { 11 | result++; 12 | String strResult = String.valueOf(result); 13 | if (strResult.contains("666")) { 14 | idx++; 15 | } 16 | } 17 | System.out.println(result); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /백준/Silver/14425. 문자열 집합/README.md: -------------------------------------------------------------------------------- 1 | # [Silver III] 문자열 집합 - 14425 2 | 3 | [문제 링크](https://www.acmicpc.net/problem/14425) 4 | 5 | ### 성능 요약 6 | 7 | 메모리: 39048 KB, 시간: 332 ms 8 | 9 | ### 분류 10 | 11 | 자료 구조(data_structures), 해시를 사용한 집합과 맵(hash_set), 문자열(string), 트리를 사용한 집합과 맵(tree_set) 12 | 13 | -------------------------------------------------------------------------------- /백준/Silver/1446. 지름길/README.md: -------------------------------------------------------------------------------- 1 | # [Silver I] 지름길 - 1446 2 | 3 | [문제 링크](https://www.acmicpc.net/problem/1446) 4 | 5 | ### 성능 요약 6 | 7 | 메모리: 11760 KB, 시간: 88 ms 8 | 9 | ### 분류 10 | 11 | 데이크스트라, 다이나믹 프로그래밍, 그래프 이론 12 | 13 | ### 문제 설명 14 | 15 |매일 아침, 세준이는 학교에 가기 위해서 차를 타고 D킬로미터 길이의 고속도로를 지난다. 이 고속도로는 심각하게 커브가 많아서 정말 운전하기도 힘들다. 어느 날, 세준이는 이 고속도로에 지름길이 존재한다는 것을 알게 되었다. 모든 지름길은 일방통행이고, 고속도로를 역주행할 수는 없다.
16 | 17 |세준이가 운전해야 하는 거리의 최솟값을 출력하시오.
18 | 19 | ### 입력 20 | 21 |첫째 줄에 지름길의 개수 N과 고속도로의 길이 D가 주어진다. N은 12 이하인 양의 정수이고, D는 10,000보다 작거나 같은 자연수이다. 다음 N개의 줄에 지름길의 시작 위치, 도착 위치, 지름길의 길이가 주어진다. 모든 위치와 길이는 10,000보다 작거나 같은 음이 아닌 정수이다. 지름길의 시작 위치는 도착 위치보다 작다.
22 | 23 | ### 출력 24 | 25 |세준이가 운전해야하는 거리의 최솟값을 출력하시오.
26 | 27 | -------------------------------------------------------------------------------- /백준/Silver/15649. N과 M (1)/README.md: -------------------------------------------------------------------------------- 1 | # [Silver III] N과 M (1) - 15649 2 | 3 | [문제 링크](https://www.acmicpc.net/problem/15649) 4 | 5 | ### 성능 요약 6 | 7 | 메모리: 22772 KB, 시간: 288 ms 8 | 9 | ### 분류 10 | 11 | 백트래킹 12 | 13 | ### 문제 설명 14 | 15 |자연수 N과 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오.
16 | 17 |첫째 줄에 자연수 N과 M이 주어진다. (1 ≤ M ≤ N ≤ 8)
24 | 25 | ### 출력 26 | 27 |한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다.
28 | 29 |수열은 사전 순으로 증가하는 순서로 출력해야 한다.
30 | 31 | -------------------------------------------------------------------------------- /백준/Silver/15650. N과 M (2)/README.md: -------------------------------------------------------------------------------- 1 | # [Silver III] N과 M (2) - 15650 2 | 3 | [문제 링크](https://www.acmicpc.net/problem/15650) 4 | 5 | ### 성능 요약 6 | 7 | 메모리: 11632 KB, 시간: 80 ms 8 | 9 | ### 분류 10 | 11 | 백트래킹 12 | 13 | ### 문제 설명 14 | 15 |자연수 N과 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오.
16 | 17 |첫째 줄에 자연수 N과 M이 주어진다. (1 ≤ M ≤ N ≤ 8)
25 | 26 | ### 출력 27 | 28 |한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다.
29 | 30 |수열은 사전 순으로 증가하는 순서로 출력해야 한다.
31 | 32 | -------------------------------------------------------------------------------- /백준/Silver/15651. N과 M (3)/README.md: -------------------------------------------------------------------------------- 1 | # [Silver III] N과 M (3) - 15651 2 | 3 | [문제 링크](https://www.acmicpc.net/problem/15651) 4 | 5 | ### 성능 요약 6 | 7 | 메모리: 112444 KB, 시간: 404 ms 8 | 9 | ### 분류 10 | 11 | 백트래킹 12 | 13 | ### 문제 설명 14 | 15 |자연수 N과 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오.
16 | 17 |첫째 줄에 자연수 N과 M이 주어진다. (1 ≤ M ≤ N ≤ 7)
25 | 26 | ### 출력 27 | 28 |한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다.
29 | 30 |수열은 사전 순으로 증가하는 순서로 출력해야 한다.
31 | 32 | -------------------------------------------------------------------------------- /백준/Silver/15652. N과 M (4)/README.md: -------------------------------------------------------------------------------- 1 | # [Silver III] N과 M (4) - 15652 2 | 3 | [문제 링크](https://www.acmicpc.net/problem/15652) 4 | 5 | ### 성능 요약 6 | 7 | 메모리: 15572 KB, 시간: 124 ms 8 | 9 | ### 분류 10 | 11 | 백트래킹 12 | 13 | ### 문제 설명 14 | 15 |자연수 N과 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오.
16 | 17 |첫째 줄에 자연수 N과 M이 주어진다. (1 ≤ M ≤ N ≤ 8)
30 | 31 | ### 출력 32 | 33 |한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다.
34 | 35 |수열은 사전 순으로 증가하는 순서로 출력해야 한다.
36 | 37 | -------------------------------------------------------------------------------- /백준/Silver/17103. 골드바흐 파티션/README.md: -------------------------------------------------------------------------------- 1 | # [Silver II] 골드바흐 파티션 - 17103 2 | 3 | [문제 링크](https://www.acmicpc.net/problem/17103) 4 | 5 | ### 성능 요약 6 | 7 | 메모리: 16552 KB, 시간: 388 ms 8 | 9 | ### 분류 10 | 11 | 수학, 정수론, 소수 판정, 에라토스테네스의 체 12 | 13 | ### 문제 설명 14 | 15 |짝수 N을 두 소수의 합으로 나타내는 표현을 골드바흐 파티션이라고 한다. 짝수 N이 주어졌을 때, 골드바흐 파티션의 개수를 구해보자. 두 소수의 순서만 다른 것은 같은 파티션이다.
20 | 21 | ### 입력 22 | 23 |첫째 줄에 테스트 케이스의 개수 T (1 ≤ T ≤ 100)가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 정수 N은 짝수이고, 2 < N ≤ 1,000,000을 만족한다.
24 | 25 | ### 출력 26 | 27 |각각의 테스트 케이스마다 골드바흐 파티션의 수를 출력한다.
28 | 29 | -------------------------------------------------------------------------------- /백준/Silver/1735. 분수 합/README.md: -------------------------------------------------------------------------------- 1 | # [Silver III] 분수 합 - 1735 2 | 3 | [문제 링크](https://www.acmicpc.net/problem/1735) 4 | 5 | ### 성능 요약 6 | 7 | 메모리: 11892 KB, 시간: 80 ms 8 | 9 | ### 분류 10 | 11 | 유클리드 호제법, 수학, 정수론 12 | 13 | ### 문제 설명 14 | 15 |분수 A/B는 분자가 A, 분모가 B인 분수를 의미한다. A와 B는 모두 자연수라고 하자.
16 |두 분수의 합 또한 분수로 표현할 수 있다. 두 분수가 주어졌을 때, 그 합을 기약분수의 형태로 구하는 프로그램을 작성하시오. 기약분수란 더 이상 약분되지 않는 분수를 의미한다.
17 | 18 | ### 입력 19 | 20 |첫째 줄과 둘째 줄에, 각 분수의 분자와 분모를 뜻하는 두 개의 자연수가 순서대로 주어진다. 입력되는 네 자연수는 모두 30,000 이하이다.
21 | 22 | ### 출력 23 | 24 |첫째 줄에 구하고자 하는 기약분수의 분자와 분모를 뜻하는 두 개의 자연수를 빈 칸을 사이에 두고 순서대로 출력한다.
25 | 26 | -------------------------------------------------------------------------------- /백준/Silver/17478. 재귀함수가 뭔가요?/README.md: -------------------------------------------------------------------------------- 1 | # [Silver V] 재귀함수가 뭔가요? - 17478 2 | 3 | [문제 링크](https://www.acmicpc.net/problem/17478) 4 | 5 | ### 성능 요약 6 | 7 | 메모리: 11872 KB, 시간: 84 ms 8 | 9 | ### 분류 10 | 11 | 구현(implementation), 재귀(recursion) 12 | 13 | ### 문제 설명 14 | 15 |평소에 질문을 잘 받아주기로 유명한 중앙대학교의 JH 교수님은 학생들로부터 재귀함수가 무엇인지에 대하여 많은 질문을 받아왔다.
16 | 17 |매번 질문을 잘 받아주셨던 JH 교수님이지만 그는 중앙대학교가 자신과 맞는가에 대한 고민을 항상 해왔다.
18 | 19 |중앙대학교와 자신의 길이 맞지 않다고 생각한 JH 교수님은 결국 중앙대학교를 떠나기로 결정하였다.
20 | 21 |떠나기 전까지도 제자들을 생각하셨던 JH 교수님은 재귀함수가 무엇인지 물어보는 학생들을 위한 작은 선물로 자동 응답 챗봇을 준비하기로 했다.
22 | 23 |JH 교수님이 만들 챗봇의 응답을 출력하는 프로그램을 만들어보자.
24 | 25 | ### 입력 26 | 27 |교수님이 출력을 원하는 재귀 횟수 N(1 ≤ N ≤ 50)이 주어진다.
28 | 29 | ### 출력 30 | 31 |출력 예시를 보고 재귀 횟수에 따른 챗봇의 응답을 출력한다.
32 | 33 | -------------------------------------------------------------------------------- /백준/Silver/1764. 듣보잡/README.md: -------------------------------------------------------------------------------- 1 | # [Silver IV] 듣보잡 - 1764 2 | 3 | [문제 링크](https://www.acmicpc.net/problem/1764) 4 | 5 | ### 성능 요약 6 | 7 | 메모리: 25428 KB, 시간: 252 ms 8 | 9 | ### 분류 10 | 11 | 자료 구조, 해시를 사용한 집합과 맵, 정렬, 문자열 12 | 13 | ### 문제 설명 14 | 15 |김진영이 듣도 못한 사람의 명단과, 보도 못한 사람의 명단이 주어질 때, 듣도 보도 못한 사람의 명단을 구하는 프로그램을 작성하시오.
16 | 17 | ### 입력 18 | 19 |첫째 줄에 듣도 못한 사람의 수 N, 보도 못한 사람의 수 M이 주어진다. 이어서 둘째 줄부터 N개의 줄에 걸쳐 듣도 못한 사람의 이름과, N+2째 줄부터 보도 못한 사람의 이름이 순서대로 주어진다. 이름은 띄어쓰기 없이 알파벳 소문자로만 이루어지며, 그 길이는 20 이하이다. N, M은 500,000 이하의 자연수이다.
20 | 21 |듣도 못한 사람의 명단에는 중복되는 이름이 없으며, 보도 못한 사람의 명단도 마찬가지이다.
22 | 23 | ### 출력 24 | 25 |듣보잡의 수와 그 명단을 사전순으로 출력한다.
26 | 27 | -------------------------------------------------------------------------------- /백준/Silver/18870. 좌표 압축/README.md: -------------------------------------------------------------------------------- 1 | # [Silver II] 좌표 압축 - 18870 2 | 3 | [문제 링크](https://www.acmicpc.net/problem/18870) 4 | 5 | ### 성능 요약 6 | 7 | 메모리: 359540 KB, 시간: 3528 ms 8 | 9 | ### 분류 10 | 11 | 값 / 좌표 압축, 정렬 12 | 13 | ### 문제 설명 14 | 15 |수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다.
16 | 17 |Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표 Xj의 개수와 같아야 한다.
18 | 19 |X1, X2, ..., XN에 좌표 압축을 적용한 결과 X'1, X'2, ..., X'N를 출력해보자.
20 | 21 | ### 입력 22 | 23 |첫째 줄에 N이 주어진다.
24 | 25 |둘째 줄에는 공백 한 칸으로 구분된 X1, X2, ..., XN이 주어진다.
26 | 27 | ### 출력 28 | 29 |첫째 줄에 X'1, X'2, ..., X'N을 공백 한 칸으로 구분해서 출력한다.
30 | 31 | -------------------------------------------------------------------------------- /백준/Silver/1904. 01타일/01타일.java: -------------------------------------------------------------------------------- 1 | import java.io.*; 2 | 3 | public class Main { 4 | public static void main(String[] args) throws IOException { 5 | BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); 6 | int N = Integer.parseInt(reader.readLine()); 7 | // 1. 배열 생성 8 | int[] dp = new int[1000001]; 9 | // 2. 초기화 10 | dp[1] = 1; 11 | dp[2] = 2; 12 | // 3. 점화식 기반 계산값 적용 13 | for (int index = 3; index < N + 1; index++) { 14 | dp[index] = (dp[index - 1] + dp[index - 2]) % 15746; 15 | } 16 | 17 | BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(System.out)); 18 | writer.write(Integer.toString(dp[N])); 19 | writer.flush(); 20 | writer.close(); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /백준/Silver/1904. 01타일/README.md: -------------------------------------------------------------------------------- 1 | # [Silver III] 01타일 - 1904 2 | 3 | [문제 링크](https://www.acmicpc.net/problem/1904) 4 | 5 | ### 성능 요약 6 | 7 | 메모리: 15700 KB, 시간: 108 ms 8 | 9 | ### 분류 10 | 11 | 다이나믹 프로그래밍(dp) 12 | 13 | ### 문제 설명 14 | 15 |지원이에게 2진 수열을 가르쳐 주기 위해, 지원이 아버지는 그에게 타일들을 선물해주셨다. 그리고 이 각각의 타일들은 0 또는 1이 쓰여 있는 낱장의 타일들이다.
16 | 17 |어느 날 짓궂은 동주가 지원이의 공부를 방해하기 위해 0이 쓰여진 낱장의 타일들을 붙여서 한 쌍으로 이루어진 00 타일들을 만들었다. 결국 현재 1 하나만으로 이루어진 타일 또는 0타일을 두 개 붙인 한 쌍의 00타일들만이 남게 되었다.
18 | 19 |그러므로 지원이는 타일로 더 이상 크기가 N인 모든 2진 수열을 만들 수 없게 되었다. 예를 들어, N=1일 때 1만 만들 수 있고, N=2일 때는 00, 11을 만들 수 있다. (01, 10은 만들 수 없게 되었다.) 또한 N=4일 때는 0011, 0000, 1001, 1100, 1111 등 총 5개의 2진 수열을 만들 수 있다.
20 | 21 |우리의 목표는 N이 주어졌을 때 지원이가 만들 수 있는 모든 가짓수를 세는 것이다. 단 타일들은 무한히 많은 것으로 가정하자.
22 | 23 | ### 입력 24 | 25 |첫 번째 줄에 자연수 N이 주어진다. (1 ≤ N ≤ 1,000,000)
26 | 27 | ### 출력 28 | 29 |첫 번째 줄에 지원이가 만들 수 있는 길이가 N인 모든 2진 수열의 개수를 15746으로 나눈 나머지를 출력한다.
30 | 31 | -------------------------------------------------------------------------------- /백준/Silver/1920. 수 찾기/README.md: -------------------------------------------------------------------------------- 1 | # [Silver IV] 수 찾기 - 1920 2 | 3 | [문제 링크](https://www.acmicpc.net/problem/1920) 4 | 5 | ### 성능 요약 6 | 7 | 메모리: 61816 KB, 시간: 560 ms 8 | 9 | ### 분류 10 | 11 | 이분 탐색(binary_search), 자료 구조(data_structures), 해시를 사용한 집합과 맵(hash_set) 12 | 13 | ### 문제 설명 14 | 15 |N개의 정수 A[1], A[2], …, A[N]이 주어져 있을 때, 이 안에 X라는 정수가 존재하는지 알아내는 프로그램을 작성하시오.
16 | 17 | ### 입력 18 | 19 |첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들이 A안에 존재하는지 알아내면 된다. 모든 정수의 범위는 -231 보다 크거나 같고 231보다 작다.
20 | 21 | ### 출력 22 | 23 |M개의 줄에 답을 출력한다. 존재하면 1을, 존재하지 않으면 0을 출력한다.
24 | 25 | -------------------------------------------------------------------------------- /백준/Silver/1927. 최소 힙/README.md: -------------------------------------------------------------------------------- 1 | # [Silver II] 최소 힙 - 1927 2 | 3 | [문제 링크](https://www.acmicpc.net/problem/1927) 4 | 5 | ### 성능 요약 6 | 7 | 메모리: 26220 KB, 시간: 356 ms 8 | 9 | ### 분류 10 | 11 | 자료 구조, 우선순위 큐 12 | 13 | ### 문제 설명 14 | 15 |널리 잘 알려진 자료구조 중 최소 힙이 있다. 최소 힙을 이용하여 다음과 같은 연산을 지원하는 프로그램을 작성하시오.
16 | 17 |프로그램은 처음에 비어있는 배열에서 시작하게 된다.
23 | 24 | ### 입력 25 | 26 |첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0이라면 배열에서 가장 작은 값을 출력하고 그 값을 배열에서 제거하는 경우이다. x는 231보다 작은 자연수 또는 0이고, 음의 정수는 입력으로 주어지지 않는다.
27 | 28 | ### 출력 29 | 30 |입력에서 0이 주어진 횟수만큼 답을 출력한다. 만약 배열이 비어 있는 경우인데 가장 작은 값을 출력하라고 한 경우에는 0을 출력하면 된다.
31 | 32 | -------------------------------------------------------------------------------- /백준/Silver/1929. 소수 구하기/README.md: -------------------------------------------------------------------------------- 1 | # [Silver III] 소수 구하기 - 1929 2 | 3 | [문제 링크](https://www.acmicpc.net/problem/1929) 4 | 5 | ### 성능 요약 6 | 7 | 메모리: 308420 KB, 시간: 3128 ms 8 | 9 | ### 분류 10 | 11 | 수학, 정수론, 소수 판정, 에라토스테네스의 체 12 | 13 | ### 문제 설명 14 | 15 |M이상 N이하의 소수를 모두 출력하는 프로그램을 작성하시오.
16 | 17 | ### 입력 18 | 19 |첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다.
20 | 21 | ### 출력 22 | 23 |한 줄에 하나씩, 증가하는 순서대로 소수를 출력한다.
24 | 25 | -------------------------------------------------------------------------------- /백준/Silver/2164. 카드2/README.md: -------------------------------------------------------------------------------- 1 | # [Silver IV] 카드2 - 2164 2 | 3 | [문제 링크](https://www.acmicpc.net/problem/2164) 4 | 5 | ### 성능 요약 6 | 7 | 메모리: 43056 KB, 시간: 140 ms 8 | 9 | ### 분류 10 | 11 | 자료 구조(data_structures), 큐(queue) 12 | 13 | ### 문제 설명 14 | 15 |N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다.
16 | 17 |이제 다음과 같은 동작을 카드가 한 장 남을 때까지 반복하게 된다. 우선, 제일 위에 있는 카드를 바닥에 버린다. 그 다음, 제일 위에 있는 카드를 제일 아래에 있는 카드 밑으로 옮긴다.
18 | 19 |예를 들어 N=4인 경우를 생각해 보자. 카드는 제일 위에서부터 1234 의 순서로 놓여있다. 1을 버리면 234가 남는다. 여기서 2를 제일 아래로 옮기면 342가 된다. 3을 버리면 42가 되고, 4를 밑으로 옮기면 24가 된다. 마지막으로 2를 버리고 나면, 남는 카드는 4가 된다.
20 | 21 |N이 주어졌을 때, 제일 마지막에 남게 되는 카드를 구하는 프로그램을 작성하시오.
22 | 23 | ### 입력 24 | 25 |첫째 줄에 정수 N(1 ≤ N ≤ 500,000)이 주어진다.
26 | 27 | ### 출력 28 | 29 |첫째 줄에 남게 되는 카드의 번호를 출력한다.
30 | 31 | -------------------------------------------------------------------------------- /백준/Silver/2164. 카드2/카드2.java: -------------------------------------------------------------------------------- 1 | import java.io.BufferedReader; 2 | import java.io.IOException; 3 | import java.io.InputStreamReader; 4 | import java.util.LinkedList; 5 | import java.util.Queue; 6 | 7 | public class Main { 8 | public static void main(String[] args) throws IOException { 9 | BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); 10 | 11 | int N = Integer.parseInt(reader.readLine()); // 카드 수 12 | 13 | QueueN*M크기의 행렬 A와 M*K크기의 행렬 B가 주어졌을 때, 두 행렬을 곱하는 프로그램을 작성하시오.
16 | 17 | ### 입력 18 | 19 |첫째 줄에 행렬 A의 크기 N 과 M이 주어진다. 둘째 줄부터 N개의 줄에 행렬 A의 원소 M개가 순서대로 주어진다. 그 다음 줄에는 행렬 B의 크기 M과 K가 주어진다. 이어서 M개의 줄에 행렬 B의 원소 K개가 차례대로 주어진다. N과 M, 그리고 K는 100보다 작거나 같고, 행렬의 원소는 절댓값이 100보다 작거나 같은 정수이다.
20 | 21 | ### 출력 22 | 23 |첫째 줄부터 N개의 줄에 행렬 A와 B를 곱한 행렬을 출력한다. 행렬의 각 원소는 공백으로 구분한다.
24 | 25 | -------------------------------------------------------------------------------- /백준/Silver/2751. 수 정렬하기 2/README.md: -------------------------------------------------------------------------------- 1 | # [Silver V] 수 정렬하기 2 - 2751 2 | 3 | [문제 링크](https://www.acmicpc.net/problem/2751) 4 | 5 | ### 성능 요약 6 | 7 | 메모리: 304092 KB, 시간: 972 ms 8 | 9 | ### 분류 10 | 11 | 정렬 12 | 13 | ### 문제 설명 14 | 15 |N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오.
16 | 17 | ### 입력 18 | 19 |첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다.
20 | 21 | ### 출력 22 | 23 |첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다.
24 | 25 | -------------------------------------------------------------------------------- /백준/Silver/2822. 점수 계산/README.md: -------------------------------------------------------------------------------- 1 | # [Silver V] 점수 계산 - 2822 2 | 3 | [문제 링크](https://www.acmicpc.net/problem/2822) 4 | 5 | ### 성능 요약 6 | 7 | 메모리: 11632 KB, 시간: 84 ms 8 | 9 | ### 분류 10 | 11 | 정렬 12 | 13 | ### 문제 설명 14 | 15 |상근이는 퀴즈쇼의 PD이다. 이 퀴즈쇼의 참가자는 총 8개 문제를 푼다. 참가자는 각 문제를 풀고, 그 문제를 풀었을 때 얻는 점수는 문제를 풀기 시작한 시간부터 경과한 시간과 난이도로 결정한다. 문제를 풀지 못한 경우에는 0점을 받는다. 참가자의 총 점수는 가장 높은 점수 5개의 합이다.
16 | 17 |상근이는 잠시 여자친구와 전화 통화를 하느라 참가자의 점수를 계산하지 않고 있었다. 참가자의 8개 문제 점수가 주어졌을 때, 총 점수를 구하는 프로그램을 작성하시오.
18 | 19 | ### 입력 20 | 21 |8개 줄에 걸쳐서 각 문제에 대한 참가자의 점수가 주어진다. 점수는 0보다 크거나 같고, 150보다 작거나 같다. 모든 문제에 대한 점수는 서로 다르다. 입력으로 주어지는 순서대로 1번 문제, 2번 문제, ... 8번 문제이다.
22 | 23 | ### 출력 24 | 25 |첫째 줄에 참가자의 총점을 출력한다. 둘째 줄에는 어떤 문제가 최종 점수에 포함되는지를 공백으로 구분하여 출력한다. 출력은 문제 번호가 증가하는 순서이어야 한다.
26 | 27 | -------------------------------------------------------------------------------- /백준/Silver/2839. 설탕 배달/README.md: -------------------------------------------------------------------------------- 1 | # [Silver IV] 설탕 배달 - 2839 2 | 3 | [문제 링크](https://www.acmicpc.net/problem/2839) 4 | 5 | ### 성능 요약 6 | 7 | 메모리: 11580 KB, 시간: 76 ms 8 | 9 | ### 분류 10 | 11 | 다이나믹 프로그래밍(dp), 그리디 알고리즘(greedy), 수학(math) 12 | 13 | ### 문제 설명 14 | 15 |상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그램 봉지와 5킬로그램 봉지가 있다.
16 | 17 |상근이는 귀찮기 때문에, 최대한 적은 봉지를 들고 가려고 한다. 예를 들어, 18킬로그램 설탕을 배달해야 할 때, 3킬로그램 봉지 6개를 가져가도 되지만, 5킬로그램 3개와 3킬로그램 1개를 배달하면, 더 적은 개수의 봉지를 배달할 수 있다.
18 | 19 |상근이가 설탕을 정확하게 N킬로그램 배달해야 할 때, 봉지 몇 개를 가져가면 되는지 그 수를 구하는 프로그램을 작성하시오.
20 | 21 | ### 입력 22 | 23 |첫째 줄에 N이 주어진다. (3 ≤ N ≤ 5000)
24 | 25 | ### 출력 26 | 27 |상근이가 배달하는 봉지의 최소 개수를 출력한다. 만약, 정확하게 N킬로그램을 만들 수 없다면 -1을 출력한다.
28 | 29 | -------------------------------------------------------------------------------- /백준/Silver/2839. 설탕 배달/설탕 배달.java: -------------------------------------------------------------------------------- 1 | import java.io.*; 2 | 3 | public class Main { 4 | public static void main(String[] args) throws IOException { 5 | BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); 6 | int input = Integer.parseInt(reader.readLine()); 7 | 8 | int result = -1; 9 | if (input % 5 == 0){ 10 | result = input / 5; 11 | } else if ((input != 4 && input != 7) && (input % 5 == 1 || input % 5 == 3)) { 12 | result = input / 5 + 1; 13 | } else if ((input != 4 && input != 7) && (input % 5 == 2 || input % 5 == 4)) { 14 | result = input / 5 + 2; 15 | } 16 | 17 | BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(System.out)); 18 | writer.write(Integer.toString(result)); 19 | writer.flush(); 20 | writer.close(); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /백준/Silver/4134. 다음 소수/README.md: -------------------------------------------------------------------------------- 1 | # [Silver IV] 다음 소수 - 4134 2 | 3 | [문제 링크](https://www.acmicpc.net/problem/4134) 4 | 5 | ### 성능 요약 6 | 7 | 메모리: 97240 KB, 시간: 848 ms 8 | 9 | ### 분류 10 | 11 | 브루트포스 알고리즘, 수학, 정수론, 소수 판정 12 | 13 | ### 문제 설명 14 | 15 |16 | 정수 n(0 ≤ n ≤ 4*109)가 주어졌을 때, n보다 크거나 같은 소수 중 가장 작은 소수 찾는 프로그램을 작성하시오.
17 | 18 | ### 입력 19 | 20 |21 | 첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 정수 n이 주어진다.
22 | 23 | ### 출력 24 | 25 |26 | 각각의 테스트 케이스에 대해서 n보다 크거나 같은 소수 중 가장 작은 소수를 한 줄에 하나씩 출력한다.
27 | 28 | -------------------------------------------------------------------------------- /백준/Silver/4134. 다음 소수/다음 소수.java: -------------------------------------------------------------------------------- 1 | import java.io.*; 2 | import java.math.BigInteger; 3 | 4 | public class Main { 5 | private static BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); 6 | private static BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(System.out)); 7 | 8 | public static void main(String[] args) throws IOException { 9 | int count = Integer.parseInt(bufferedReader.readLine()); 10 | 11 | for (int i = 0; i < count; i++) { 12 | BigInteger n = new BigInteger(bufferedReader.readLine()); 13 | 14 | if (n.isProbablePrime(10)) { 15 | bufferedWriter.write(n + "\n"); 16 | } else { 17 | bufferedWriter.write(n.nextProbablePrime() + "\n"); 18 | } 19 | } 20 | bufferedWriter.flush(); 21 | bufferedWriter.close(); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /백준/Silver/4358. 생태학/README.md: -------------------------------------------------------------------------------- 1 | # [Silver II] 생태학 - 4358 2 | 3 | [문제 링크](https://www.acmicpc.net/problem/4358) 4 | 5 | ### 성능 요약 6 | 7 | 메모리: 89952 KB, 시간: 584 ms 8 | 9 | ### 분류 10 | 11 | 자료 구조(data_structures), 해시를 사용한 집합과 맵(hash_set), 문자열(string), 트리를 사용한 집합과 맵(tree_set) 12 | 13 | ### 문제 설명 14 | 15 |생태학에서 나무의 분포도를 측정하는 것은 중요하다. 그러므로 당신은 미국 전역의 나무들이 주어졌을 때, 각 종이 전체에서 몇 %를 차지하는지 구하는 프로그램을 만들어야 한다.
16 | 17 | ### 입력 18 | 19 |프로그램은 여러 줄로 이루어져 있으며, 한 줄에 하나의 나무 종 이름이 주어진다. 어떤 종 이름도 30글자를 넘지 않으며, 입력에는 최대 10,000개의 종이 주어지고 최대 1,000,000그루의 나무가 주어진다.
20 | 21 | ### 출력 22 | 23 |주어진 각 종의 이름을 사전순으로 출력하고, 그 종이 차지하는 비율을 백분율로 소수점 4째자리까지 반올림해 함께 출력한다.
24 | 25 | -------------------------------------------------------------------------------- /백준/Silver/4948. 베르트랑 공준/README.md: -------------------------------------------------------------------------------- 1 | # [Silver II] 베르트랑 공준 - 4948 2 | 3 | [문제 링크](https://www.acmicpc.net/problem/4948) 4 | 5 | ### 성능 요약 6 | 7 | 메모리: 13436 KB, 시간: 180 ms 8 | 9 | ### 분류 10 | 11 | 수학, 정수론, 소수 판정, 에라토스테네스의 체 12 | 13 | ### 문제 설명 14 | 15 |베르트랑 공준은 임의의 자연수 n에 대하여, n보다 크고, 2n보다 작거나 같은 소수는 적어도 하나 존재한다는 내용을 담고 있다.
16 | 17 |이 명제는 조제프 베르트랑이 1845년에 추측했고, 파프누티 체비쇼프가 1850년에 증명했다.
18 | 19 |예를 들어, 10보다 크고, 20보다 작거나 같은 소수는 4개가 있다. (11, 13, 17, 19) 또, 14보다 크고, 28보다 작거나 같은 소수는 3개가 있다. (17,19, 23)
20 | 21 |자연수 n이 주어졌을 때, n보다 크고, 2n보다 작거나 같은 소수의 개수를 구하는 프로그램을 작성하시오.
22 | 23 | ### 입력 24 | 25 |입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 케이스는 n을 포함하는 한 줄로 이루어져 있다.
26 | 27 |입력의 마지막에는 0이 주어진다.
28 | 29 | ### 출력 30 | 31 |각 테스트 케이스에 대해서, n보다 크고, 2n보다 작거나 같은 소수의 개수를 출력한다.
32 | 33 | -------------------------------------------------------------------------------- /백준/Silver/7785. 회사에 있는 사람/README.md: -------------------------------------------------------------------------------- 1 | # [Silver V] 회사에 있는 사람 - 7785 2 | 3 | [문제 링크](https://www.acmicpc.net/problem/7785) 4 | 5 | ### 성능 요약 6 | 7 | 메모리: 58876 KB, 시간: 692 ms 8 | 9 | ### 분류 10 | 11 | 자료 구조, 해시를 사용한 집합과 맵 12 | 13 | ### 문제 설명 14 | 15 |상근이는 세계적인 소프트웨어 회사 기글에서 일한다. 이 회사의 가장 큰 특징은 자유로운 출퇴근 시간이다. 따라서, 직원들은 반드시 9시부터 6시까지 회사에 있지 않아도 된다.
16 | 17 |각 직원은 자기가 원할 때 출근할 수 있고, 아무때나 퇴근할 수 있다.
18 | 19 |상근이는 모든 사람의 출입카드 시스템의 로그를 가지고 있다. 이 로그는 어떤 사람이 회사에 들어왔는지, 나갔는지가 기록되어져 있다. 로그가 주어졌을 때, 현재 회사에 있는 모든 사람을 구하는 프로그램을 작성하시오.
20 | 21 | ### 입력 22 | 23 |첫째 줄에 로그에 기록된 출입 기록의 수 n이 주어진다. (2 ≤ n ≤ 106) 다음 n개의 줄에는 출입 기록이 순서대로 주어지며, 각 사람의 이름이 주어지고 "enter"나 "leave"가 주어진다. "enter"인 경우는 출근, "leave"인 경우는 퇴근이다.
24 | 25 |회사에는 동명이인이 없으며, 대소문자가 다른 경우에는 다른 이름이다. 사람들의 이름은 알파벳 대소문자로 구성된 5글자 이하의 문자열이다.
26 | 27 | ### 출력 28 | 29 |현재 회사에 있는 사람의 이름을 사전 순의 역순으로 한 줄에 한 명씩 출력한다.
30 | 31 | -------------------------------------------------------------------------------- /백준/Silver/9461. 파도반 수열/README.md: -------------------------------------------------------------------------------- 1 | # [Silver III] 파도반 수열 - 9461 2 | 3 | [문제 링크](https://www.acmicpc.net/problem/9461) 4 | 5 | ### 성능 요약 6 | 7 | 메모리: 11672 KB, 시간: 76 ms 8 | 9 | ### 분류 10 | 11 | 다이나믹 프로그래밍(dp), 수학(math) 12 | 13 | ### 문제 설명 14 | 15 |오른쪽 그림과 같이 삼각형이 나선 모양으로 놓여져 있다. 첫 삼각형은 정삼각형으로 변의 길이는 1이다. 그 다음에는 다음과 같은 과정으로 정삼각형을 계속 추가한다. 나선에서 가장 긴 변의 길이를 k라 했을 때, 그 변에 길이가 k인 정삼각형을 추가한다.
파도반 수열 P(N)은 나선에 있는 정삼각형의 변의 길이이다. P(1)부터 P(10)까지 첫 10개 숫자는 1, 1, 1, 2, 2, 3, 4, 5, 7, 9이다.
18 | 19 |N이 주어졌을 때, P(N)을 구하는 프로그램을 작성하시오.
20 | 21 | ### 입력 22 | 23 |첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, N이 주어진다. (1 ≤ N ≤ 100)
24 | 25 | ### 출력 26 | 27 |각 테스트 케이스마다 P(N)을 출력한다.
28 | 29 | -------------------------------------------------------------------------------- /백준/Unrated/10930. SHA-256/README.md: -------------------------------------------------------------------------------- 1 | # [Unrated] SHA-256 - 10930 2 | 3 | [문제 링크](https://www.acmicpc.net/problem/10930) 4 | 5 | ### 성능 요약 6 | 7 | 메모리: 12912 KB, 시간: 108 ms 8 | 9 | ### 분류 10 | 11 | 문자열(string), 구현(implementation) 12 | 13 | -------------------------------------------------------------------------------- /프로그래머스/lv1/64061. 크레인 인형뽑기 게임/크레인 인형뽑기 게임.py: -------------------------------------------------------------------------------- 1 | def solution(board, moves): 2 | answer = 0 3 | stack = [] 4 | 5 | for m in moves : 6 | for i in range(len(board)) : 7 | if board[i][m - 1] == 0 : 8 | continue 9 | elif stack and board[i][m - 1] == stack[-1] : 10 | stack.pop() 11 | board[i][m - 1] = 0 12 | answer += 2 13 | break 14 | else : 15 | stack.append(board[i][m - 1]) 16 | board[i][m - 1] = 0 17 | break 18 | 19 | return answer -------------------------------------------------------------------------------- /프로그래머스/lv2/12939. 최댓값과 최솟값/최댓값과 최솟값.java: -------------------------------------------------------------------------------- 1 | import java.util.StringTokenizer; 2 | import java.util.Arrays; 3 | 4 | class Solution { 5 | public String solution(String s) { 6 | StringTokenizer tokenizer = new StringTokenizer(s, " "); 7 | int count = tokenizer.countTokens(); 8 | int[] sArray = new int[count]; 9 | 10 | for (int x = 0; x < count; x++) { 11 | sArray[x] = Integer.parseInt(tokenizer.nextToken()); 12 | } 13 | 14 | Arrays.sort(sArray); 15 | 16 | String answer = sArray[0] + " " + sArray[count -1]; 17 | return answer; 18 | } 19 | } --------------------------------------------------------------------------------