본문 바로가기

전체 글

(215)
백준 9093 단어 뒤집기 (Java) 1. 문제 링크 9093번: 단어 뒤집기 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 문장이 하나 주어진다. 단어의 길이는 최대 20, 문장의 길이는 최대 1000이다. 단어와 단어 사이에는 www.acmicpc.net 2. 문제 및 입출력예제 3. 문제 풀이 문장을 공백 기준으로 split하여 단어를 배열에 저장한다. 그 안에서 반복문을 돌려도 결과는 나올 것 같지만 StringBuilder의 reverse를 활용해 문자열을 역으로 출력하게 했다. new StringBuilder(문자열).reverse().toString()을 사용하면 이런 문제를 쉽게 풀 수 있다. 4. 코드 import java.io.BufferedReader; import java..
백준 2609 최대공약수와 최소공배수 (Java) 1. 문제 링크 2609번: 최대공약수와 최소공배수 첫째 줄에는 입력으로 주어진 두 수의 최대공약수를, 둘째 줄에는 입력으로 주어진 두 수의 최소 공배수를 출력한다. www.acmicpc.net 2. 문제 및 입출력예제 3. 문제 풀이 최대공약수는 유클리드 호제법을 이용하면 된다. 큰 수 A, 작은 수 B의 경우, B와 A%B 값을 재귀함수로 돌리면 A%B가 0이 되는 순간의 B가 최대공약수이다. 또한 A x B = 최대공약수 x 최소공배수라서 최소공배수는 A * B / 최대공약수로 구할 수 있다. 4. 코드 import java.io.BufferedReader; import java.io.InputStreamReader; public class Main { public static void main(S..
백준 1764 듣보잡 (Java) 1. 문제 링크 1764번: 듣보잡 첫째 줄에 듣도 못한 사람의 수 N, 보도 못한 사람의 수 M이 주어진다. 이어서 둘째 줄부터 N개의 줄에 걸쳐 듣도 못한 사람의 이름과, N+2째 줄부터 보도 못한 사람의 이름이 순서대로 주어진다. www.acmicpc.net 2. 문제 및 입출력예제 3. 문제 풀이 처음에는 반복문을 N과 M만큼 돌면서 ArrayList에 추가하고 다른 for문으로 검사를 했다. 그러나 시간초과라는 결과가 발생했고 검사하는 과정을 M번 도는 반복문에 추가했다. 그래도 시간초과가 나온다. 그 이유는 List에서 탐색이 오래 걸리기 때문이었고, 중복이 없다는 전제가 있어 Set으로 변경했다. 그 결과 성공적인 결과가 나왔다. 4-1 코드 제출 후 맞았습니다!!가 나왔지만 사전순으로 출력..
백준 6065 카잉 달력 (Java) 1. 문제 링크 6064번: 카잉 달력 입력 데이터는 표준 입력을 사용한다. 입력은 T개의 테스트 데이터로 구성된다. 입력의 첫 번째 줄에는 입력 데이터의 수를 나타내는 정수 T가 주어진다. 각 테스트 데이터는 한 줄로 구성된다. www.acmicpc.net 2. 문제 및 입출력예제 3. 문제 풀이 처음에는 다른 문제 풀듯이 연도를 +하면서 했더니 시간 초과라는 결과가 나왔다. 그래서 반복문의 횟수를 조금이라도 줄이려고 최소공배수를 구해서 돌렸지만 역시나 시간 초과..가 발생했다. 반복문 안의 내용을 효율적으로 돌리기 위해 갖가지 방법을 생각해보다 x를 M만큼 더하면서 그때의 연도%N이 y가 되는지 확인해봤고 그래도 틀린 답이 나오는 경우가 있어서 예시를 생각하면서 하나씩 생각해보니까 시작이 1 1이어서..
백준 11047 동전 0 (Java) 1. 문제 링크 11047번: 동전 0 첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수) www.acmicpc.net 2. 문제 및 입출력예제 3. 문제 풀이 오름차순으로 주어지는 동전을 배열에 넣은 후 K를 배열의 뒤부터 빼는 반복문을 돌리면 된다. 4. 코드 import java.io.BufferedReader; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws Exce..
백준 1010 다리놓기 (Java) 1. 문제 링크 1010번: 다리 놓기 입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트케이스에 대해 강의 서쪽과 동쪽에 있는 사이트의 개수 정수 N, M (0 < N ≤ M < 30)이 주어진다. www.acmicpc.net 2. 문제 및 입출력예제 3. 문제 풀이 N개와 M개 중 경우의 수를 구하는 문제이다. 조합 문제로 N
백준 1157 단어 공부 (Java) 1. 문제 링크 1157번: 단어 공부 알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다. www.acmicpc.net 2. 문제 및 입출력예제 3. 문제 풀이 출력조건이 대문자라서 toUpperCase()를 이용해 전부 대문자로 만든다. split이 아닌 charAt()을 이용해 한 글자씩 뽑아서 아스키코드의 알파벳으로 바꾸고 반복문을 돌리며 카운트를 한다. 4. 코드 import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.ArrayList; public class Main { public static v..
백준 8958 OX퀴즈 (Java) 1. 문제 링크 8958번: OX퀴즈 "OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, 10번 문제의 점수 www.acmicpc.net 2. 문제 및 입출력예제 3. 문제 풀이 합을 저장하는 변수와 연속되는 숫자를 세는 변수를 선언한다. 그리고 O가 나오면 연속되는 숫자값을 +1하고, 합에 더한다. X가 나오면 연속되는 숫자값을 0으로 바꾼다. 4. 코드 import java.io.BufferedReader; import java.io.FileInputStream; import java.io.InputStreamReader; public class Main {..