본문 바로가기

반응형

Java/코딩 테스트

(7)
그리디: 백준 10610 자바(Java) 30 문제: https://www.acmicpc.net/problem/10610 10610번: 30 어느 날, 미르코는 우연히 길거리에서 양수 N을 보았다. 미르코는 30이란 수를 존경하기 때문에, 그는 길거리에서 찾은 수에 포함된 숫자들을 섞어 30의 배수가 되는 가장 큰 수를 만들고 싶어한 www.acmicpc.net 풀이: 미르코가 원하는 30의 배수가 되는 가장 큰 수를 찾기 위해서는 맨 끝 숫자는 '0' 이어야 한다. 각 자리 수의 합이 3으로 나누어 떨어져야 한다. 이 두 가지 조건을 만족해야 한다. 먼저 입력받을 N은 10^5개의 숫자로 이루어져 있기 때문에 int 자료형의 범위를 벗어난다. 그렇기 때문에 문자열로 입력받은 후 크기가 10인 배열을 만들어 이 배열에 입력받은 수의 정보를 넣어주는 ..
그리디: 백준 2875 자바 대회 or 인턴 문제: https://www.acmicpc.net/problem/2875 2875번: 대회 or 인턴 첫째 줄에 N, M, K가 순서대로 주어진다. (0 ≤ M ≤ 100, 0 ≤ N ≤ 100, 0 ≤ K ≤ M+N), www.acmicpc.net 풀이: 인턴쉽에 참여하는 인원 K명이 여학생, 남학생에서 빠지는 모든 경우의 수를 구해주면 된다. makeTeam함수에서는 만들 수 있는 팀의 수를 계산하고 max에는 팀의 수 중 가장 큰 값을 저장해준다. 정답: import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public clas..
다이나믹 프로그래밍(DP) : 백준 9095 자바(Java) 1, 2, 3 더하기 문제: https://www.acmicpc.net/problem/9095 풀이: 규칙을 파악하고 모든 경우에 대해 계산한 값을 dp배열에 저장하고 입력받은 케이스를 출력하는 방식으로 풀었다. 규칙은 간단했다. 정수 1 1가지 정수 2 2가지 정수 3 3가지 정수 4 7가지 . . . 이렇게 내려가는데, 정수 4 = 정수 1 + 정수 2 + 정수 3 = 7가지 임을 알 수 있다. 이 규칙에 따라 dp 배열에 저장해주면 된다. 정답: import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { static int[] dp; static int[] arr; static ..
브루트 포스: 백준 1476 자바(Java) 날짜 계산 문제: https://www.acmicpc.net/problem/1476 1476번: 날짜 계산 준규가 사는 나라는 우리가 사용하는 연도와 다른 방식을 이용한다. 준규가 사는 나라에서는 수 3개를 이용해서 연도를 나타낸다. 각각의 수는 지구, 태양, 그리고 달을 나타낸다. 지구를 나타 www.acmicpc.net 풀이: 어떤 수를 15, 28, 19로 나눈 나머지가 각각 주어진 e, m, s와 같다면 그 수를 출력하면 되는 문제이다. year를 0으로 초기화하고 1씩 늘려가며 체크를 하는 방법으로 풀었다. 예외가 있다면 만약 주어진 수를 15, 28, 19로 나누는 경우 나머지는 0이 되어버린다. 이 예외처리를 해주기 위해 주어진 e, m, s가 15, 28, 19일 경우 0으로 바꿔주었다. 정답: im..
수학: 백준 6588 자바(Java) 골드바흐의 추측 문제: https://www.acmicpc.net/problem/6588 6588번: 골드바흐의 추측 각 테스트 케이스에 대해서, n = a + b 형태로 출력한다. 이때, a와 b는 홀수 소수이다. 숫자와 연산자는 공백 하나로 구분되어져 있다. 만약, n을 만들 수 있는 방법이 여러 가지라면, b-a가 가장 큰 www.acmicpc.net 풀이: 주어진 짝수를 두 홀수 소수의 합으로 나타내는 문제이다. n = a + b 형태로 출력하는데 n을 만드는 방법 중 b - a 가 가장 큰 수를 출력하라 했으므로 n을 1씩 마이너스해가면서 소수인 경우를 찾고, 소수라면 n - b = a 식을 통해 찾은 a도 소수인지 확인한다. 만족한다면, StringBuilder sb에 추가하고 n = a + b를 만족하는 소..
수학: 백준 1978 자바(Java) 소수 찾기 문제: https://www.acmicpc.net/problem/1978 1978번: 소수 찾기 첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다. www.acmicpc.net 풀이: 입력 받은 n개의 수를 arr에 저장하고 소수를 판별해주는 함수 isPrime에 arr의 원소를 넘겨주었다. 소수 여부에 따라 true와 false가 리턴되는데, true인 경우에 cnt의 값을 1 늘려 카운트를 해주었다. 정답: import java.io.IOException; import java.io.InputStreamReader; import java.io.BufferedReader; import java.util.StringTokenizer..
수학: 백준 9613 자바(Java) GCD 합 문제: https://www.acmicpc.net/problem/9613 9613번: GCD 합 첫째 줄에 테스트 케이스의 개수 t (1 ≤ t ≤ 100)이 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있다. 각 테스트 케이스는 수의 개수 n (1 < n ≤ 100)가 주어지고, 다음에는 n개의 수가 주어진 www.acmicpc.net 풀이: 유클리드 호제법을 사용해 GCD(최대공약수)를 구하는 함수를 만들고, 전체적으로 3중 for문을 사용해 입력된 모든 숫자의 최대공약수를 구해서 더해주면 된다. 정답: import java.io.IOException; import java.io.InputStreamReader; import java.io.BufferedReader; import java.util..

반응형