목록분류 전체보기 (135)
으하하 공부일기
[문제] 정수론에서, 세 소수 문제란 다음과 같다. “5보다 큰 모든 홀수는 정확히 세 소수의 합으로 표현될 수 있다. (같은 소수를 합에 사용해도 된다.)” 예를 들어, 7 = 2 + 2 + 3, 11 = 2 + 2 + 7, 25 = 7 + 7 + 11로 나타낼 수 있다. 1939년 러시아 수학자 I. M. Vinogradov는 충분히 큰 홀수는 세 소수의 합으로 표현할 수 있다는 것을 증명했다. 여기서 충분히 크다는 것은 3315 ≈ 107000000 이상의 수라는 의미이다. 현재 가장 발전된 하한은 약 e3100 ≈ 101346 이상의 수이다. 러시아 수학자 I. M. Vinogradov 를 존경하는 새샘이는 직접 세 소수 문제를 풀어보기로 했다. 하지만 이 수는 너무 크기 때문에 컴퓨터로도 이 범..
[문제] 숫자게임을 좋아하는 새샘이는 서로 다른 7개의 정수 중에서 3개의 정수를 골라 합을 구해서 수를 만들려고 한다. 이렇게 만들 수 있는 수 중에서 5번째로 큰 수를 출력하는 프로그램을 작성하라. [입력] 첫 번째 줄에 테스트 케이스의 수 T가 주어진다. 각 테스트 케이스의 첫 번째 줄에는 7개의 서로 다른 정수가 공백으로 구분되어 주어진다. 각 정수는 1이상 100이하이다. [출력] 각 테스트 케이스마다 첫 번째 줄에는 ‘#x’(x는 테스트케이스 번호를 의미하며 1부터 시작한다)를 출력하고, 답을 출력한다. 문제 풀기 5948. 새샘이의 7-3-5 게임 [풀이] import java.util.Collections; import java.util.HashSet; import java.util.Lin..
[문제] 현주는 1번부터 N번까지 N개의 상자를 가지고 있다. 각 상자에는 숫자를 새길 수 있는데 처음에는 모두 0으로 적혀있다. 숫자가 너무 단조로웠던 현주는 다음 Q회 동안 일정 범위의 연속한 상자를 동일한 숫자로 변경하려고 한다. 변경하는 방법은 다음과 같다. · i (1 ≤ i ≤ Q)번째 작업에 대해 L번 상자부터 R번 상자까지의 값을 i로 변경 현주가 Q회 동안 위의 작업을 순서대로 한 다음 N개의 상자에 적혀있는 값들을 순서대로 출력하는 프로그램을 작성하라. [입력] 첫 번째 줄에 테스트 케이스의 수 T가 주어진다. 각 테스트 케이스의 첫 번째 줄에는 두 정수 N, Q (1 ≤ N, Q ≤ 103)가 공백으로 구분되어 주어진다. 다음 Q개의 줄의 i번째 줄에는 Li, Ri (1 ≤ Li ≤ ..
[문제] 양의 정수 N에 대해 N = X3가 되는 양의 정수X 를 구하여라. [입력] 첫 번째 줄에 테스트 케이스의 수 T가 주어진다. 각 테스트 케이스의 첫 번째 줄에는 하나의 정수 N(1≤N≤1018) 이 주어진다. [출력] 각 테스트 케이스마다 첫 번째 줄에는‘#T’(T는 테스트케이스 번호를 의미하며 1부터 시작한다.)를 출력하고, N = X3가 되는 양의 정수 X를 출력한다. 만약 이런 X가 존재하지 않으면 -1을 출력한다. 문제 풀기 5688. 세제곱근을 찾아라 [풀이] import java.util.Scanner; class Solution { public static void main(String[] args) throws Exception { Scanner sc = new Scanner(S..
[문제] 양의 정수가 주어질 때, 이 수가 홀수인지 짝수인지 판별하는 프로그램을 작성하라. [입력] 첫 번째 줄에 테스트 케이스의 수 T가 주어진다. 각 테스트 케이스의 첫 번째 줄에는 100자리 이하의 양의 정수가 주어진다. [출력] 각 테스트 케이스마다 첫 번째 줄에는‘#T’(T는 테스트케이스 번호를 의미하며 1부터 시작한다.)를 출력하고, 주어진 수가 홀수이면 “Odd”를, 짝수이면 “Even”을 출력한다. 문제 풀기 5549. 홀수일까 짝수일까 [풀이] 100자리 이하 정수는 정수형 변수에 담기 어렵기 때문에 문자열로 받아서 1의 자리가 짝수인지 홀수인지 판별한다. import java.util.Scanner; class Solution { public static void main(String[..
[문제] 2016년 1월 1일은 금요일이었고, 문득 송송이는 특정 날짜의 요일을 맞추고 싶어졌다. 2016년은 윤년이기 때문에 2월 29일이 포함된다. 2016년 m월 d일은 무슨 요일인지 맞추는 프로그램을 작성하시오. [입력] 첫 번째 줄에 테스트 케이스의 수 T가 주어진다. 각 테스트 케이스의 첫 번째 줄에는 두 정수 m,d가 공백으로 구분되어 주어진다. m,d는 2016년 m월 d일을 정상적으로 나타낼 수 있는 두 정수이다. [출력] 각 테스트 케이스마다 2016년 m월 d일이 월요일이면 0, 화요일이면 1, 수요일이면 2, 목요일이면 3, 금요일이면 4, 토요일이면 5, 일요일이면 6을 출력한다 문제 풀기 5515. 2016년 요일 맞추기 [풀이] import java.util.Scanner; c..
[문제] 민석이는 교수가 되었고, 이번에 처음으로 맡은 과목에 수강생이 N명이다. 민석이는 처음으로 과제를 내었다. 그리고 제출한 사람의 목록을 받았다. 수강생들은 1번에서 N번까지 번호가 매겨져 있고, 어떤 번호의 사람이 제출했는지에 대한 목록을 받은 것이다. 과제를 제출하지 않은 사람의 번호를 오름차순으로 출력하는 프로그램을 작성하라. [입력] 첫 번째 줄에 테스트 케이스의 수 T가 주어진다. 각 테스트 케이스의 첫 번째 줄에는 수강생의 수를 나타내는 정수 N(2≤N≤100)과 과제를 제출한 사람의 수를 나타내는 정수 K(1≤K≤N)가 공백으로 구분되어 주어진다. 두 번째 줄에는 과제를 제출한 사람의 번호 K개가 공백으로 구분되어 주어진다. 번호는 1이상 N이하의 정수이며 같은 번호가 두 번 이상 주..
[문제] 아직 글을 모르는 의석이가 벽에 걸린 칠판에 자석이 붙어있는 글자들을 붙이는 장난감을 가지고 놀고 있다. 이 장난감에 있는 글자들은 영어 대문자 ‘A’부터 ‘Z’, 영어 소문자 ‘a’부터 ‘z’, 숫자 ‘0’부터 ‘9’이다. 의석이는 칠판에 글자들을 수평으로 일렬로 붙여서 단어를 만든다. 다시 그 아래쪽에 글자들을 붙여서 또 다른 단어를 만든다. 이런 식으로 다섯 개의 단어를 만든다. 아래에 의석이가 칠판에 붙여 만든 단어들의 예가 있다. A A B C D D a f z z 0 9 1 2 1 a 8 E W g 6 P 5 h 3 k x 만들어진 다섯 개의 단어들의 글자 개수는 서로 다를 수 있다. 심심해진 의석이는 칠판에 만들어진 다섯 개의 단어를 세로로 읽으려 한다. 세로로 읽을 때, 각 단어의..