2019. 8. 6. 01:45
728x90

문제 번호: 9020

문제 제목: 골드바흐의 추측

문제 주소: https://www.acmicpc.net/problem/9020


문제 내용

어떤 짝수에 대해 두 소수의 합으로 나타내는 표현을 골드바흐 파티션이라고 한다.
입력된 짝수 n의 골드바흐 파티션을 출력한다. 골드바흐 파티션이 여러가지 일 경우 두 소수의 차이가 가장 작은 것을 출력한다.


테스트 케이스

3
8
10
16


3 5
5 5
5 11


문제 풀이

두 소수의 차이가 가장 적은 경우를 출력하는 것이므로 증가식보다는 감산식으로 하는 편이 빠르다.
실제로 증가식으로 했을 때는 12ms 소요되던 시간이 감산식으로 할 경우 0ms로 감소하는 것을 볼 수 있다.
1. 에라토스테네스의 체를 통해 10000 이하의 소수를 식별한다.
2. n을 입력 받는다.
3. n / 2부터 시작하여 감산식으로 현재 수 i가 소수이고, n - i도 소수인 경우를 찾는다.
4. 3이 성립하는 숫자를 출력하고 반복문을 빠져나온다.
※ 소수는 2를 제외하고 모두 홀수로 구성되어 있다. 따라서 4를 제외한 나머지 짝수는 모두 홀수의 합으로 표현된다.


풀이 코드


728x90

'공부 > 문제풀기' 카테고리의 다른 글

백준 3009 - 네 번째 점  (0) 2019.08.06
백준 1085 - 직사각형에서 탈출  (0) 2019.08.06
백준 4948 - 베르트랑 공준  (0) 2019.08.06
백준 1929 - 소수 구하기  (0) 2019.08.06
백준 2581 - 소수  (0) 2019.08.05
Posted by 아야카
2019. 8. 6. 01:13
728x90

문제 번호: 4948

문제 제목: 베르트랑 공준

문제 주소: https://www.acmicpc.net/problem/4948


문제 내용

n보다 크고 n * 2보다 작거나 같은 소수의 개수를 출력한다.
0이 입력되는 경우 종료한다.


테스트 케이스

1
10
13
100
1000
10000
100000
0

1
4
3
21
135
1033
8392


문제 풀이

각 수마다 소수인지 확인하는 방식으로 풀어도 통과는 가능하다.
다만 0이 입력될 때까지 소수인지 확인하는 작업이 반복되기 때문에 에라토스테네스의 체를 이용하는 편의 시간이 짧다.


풀이 코드


728x90

'공부 > 문제풀기' 카테고리의 다른 글

백준 1085 - 직사각형에서 탈출  (0) 2019.08.06
백준 9020 - 골드바흐의 추측  (0) 2019.08.06
백준 1929 - 소수 구하기  (0) 2019.08.06
백준 2581 - 소수  (0) 2019.08.05
백준 1978 - 소수 찾기  (0) 2019.08.05
Posted by 아야카
2019. 8. 6. 00:45
728x90

문제 번호: 1929

문제 제목: 소수 구하기

문제 주소: https://www.acmicpc.net/problem/1929


문제 내용

M이상 N이하인 소수를 모두 출력한다.


테스트 케이스

1 5

2
3
5

3 16

3
5
7
11
13

999900 1000000

999907
999917
999931
999953
999959
999961
999979
999983


문제 풀이

에라토스테네스의 체를 이용해 풀어야 하는 문제다.
짝수는 2의 배수로 제거하고, 나머지 홀수는 해당 수의 배수로 제거한다.
이미 제거된 인덱스에 작업이 중복되어 일어날 수 있기 때문에 이에 대한 예외처리를 진행해줄 필요가 있다.
출력이 최대 78498회까지 일어나므로 개행을 출력할 때 endl로 하지 말고 "\n"으로 해야 한다.


풀이 코드

728x90

'공부 > 문제풀기' 카테고리의 다른 글

백준 9020 - 골드바흐의 추측  (0) 2019.08.06
백준 4948 - 베르트랑 공준  (0) 2019.08.06
백준 2581 - 소수  (0) 2019.08.05
백준 1978 - 소수 찾기  (0) 2019.08.05
백준 6064 - 카잉 달력  (0) 2019.08.02
Posted by 아야카
2019. 8. 5. 23:58
728x90

문제 번호: 2581

문제 제목: 소수

문제 주소: https://www.acmicpc.net/problem/2581


문제 내용

M 이상이고 N 이하인 소수의 합과 가장 작은 소수를 출력한다. 없을 경우에는 -1을 출력한다.


테스트 케이스

7
8

7
7

60
100

620
61

8
10

-1

1
3

5
2


문제 풀이

자연수 n에 대해 i * i <= n까지의 수와 나눠떨어지지 않을 경우 소수라고 할 수 있다.
M부터 N까지 차례차례 진행하며 값을 합산하고 출력한다.
가장 작은 소수가 초기화 값과 동일한 경우에는 -1을 출력한다.


풀이 코드



728x90

'공부 > 문제풀기' 카테고리의 다른 글

백준 4948 - 베르트랑 공준  (0) 2019.08.06
백준 1929 - 소수 구하기  (0) 2019.08.06
백준 1978 - 소수 찾기  (0) 2019.08.05
백준 6064 - 카잉 달력  (0) 2019.08.02
백준 2775 - 부녀회장이 될테야  (0) 2019.08.02
Posted by 아야카
2019. 8. 5. 23:22
728x90

문제 번호: 1978

문제 제목: 소수 찾기

문제 주소: https://www.acmicpc.net/problem/1978


문제 내용

입력된 수 N개 중에서 소수가 몇 개인지 출력한다.


테스트 케이스

10
1 2 3 4 5 6 7 8 9 10

4


문제 풀이

입력된 수 n에 대해 i * i <= n일 때까지 나눠 떨어지는 수가 있는지 확인하는 방식으로 소수인지 여부를 판단할 수 있다.


풀이 코드



728x90

'공부 > 문제풀기' 카테고리의 다른 글

백준 1929 - 소수 구하기  (0) 2019.08.06
백준 2581 - 소수  (0) 2019.08.05
백준 6064 - 카잉 달력  (0) 2019.08.02
백준 2775 - 부녀회장이 될테야  (0) 2019.08.02
백준 10250 - ACM 호텔  (0) 2019.08.02
Posted by 아야카
2019. 8. 2. 15:58
728x90

문제 번호: 6064

문제 제목: 카잉 달력

문제 주소: https://www.acmicpc.net/problem/6064


문제 내용

아래에 기술된 카잉 달력의 규칙에 따라 입력된 값이 몇 번째 해인지 출력한다.
유효하지 않은 값일 경우 -1을 출력한다.
 - 달력은 M : N으로 표기한다.
 - 한 해가 지나가면 M과 N은 각각 1씩 증가한다.
 - 현재 앞의 숫자가 M일 경우 다음 해의 M은 1이다.
 - 현재 뒤의 숫자가 N일 경우 다음 해의 N은 1이다.


테스트 케이스

3
10 12 3 9
10 12 7 2
13 11 5 6


33
-1
83


문제 풀이

1. 결과 값을 저장할 변수를 -1로 초기화 한다.
2. 종말의 날인 M : N은 M과 N의 최소 공배수인 해와 동일하다. 반복문은 이 범위 내에서만 돌리면 된다.
3. M * i + x를 N으로 나눈 나머지와 y를 N으로 나눈 나머지가 동일할 경우 x : y인 해가 존재하는게 된다.
   이 경우 M * i + x를 결과 값 변수에 대입하고 반복문을 break; 한다.
4. 결과 값을 출력한다.


풀이 코드


728x90

'공부 > 문제풀기' 카테고리의 다른 글

백준 2581 - 소수  (0) 2019.08.05
백준 1978 - 소수 찾기  (0) 2019.08.05
백준 2775 - 부녀회장이 될테야  (0) 2019.08.02
백준 10250 - ACM 호텔  (0) 2019.08.02
백준 2869 - 달팽이는 올라가고 싶다  (0) 2019.08.01
Posted by 아야카
2019. 8. 2. 15:15
728x90

문제 번호: 2775

문제 제목: 부녀회장이 될테야

문제 주소: https://www.acmicpc.net/problem/2775


문제 내용

층화 호수를 입력 받았을 때 아래 규칙에 의거하여 해당 호실에 거주하고 있는 사람 수를 출력한다.
 - a층의 b호에 거주하려면 a-1층의 1호부터 b까지의 사람 수를 합한 만큼을 데려와 살아야 한다.
 - 0층부터 있으며 0층의 c호는 c명이 산다.


테스트 케이스

2
1
3
2
3



6

10 
2
1
1
14
14


1

37442160


문제 풀이

미리 값이 저장된 배열을 참조하여 입력받은 호실의 인원수를 출력하면 된다.
1. 15 * 15 배열을 생성한다.
2. 0층을 값을 초기화 한다.
3. a층 b - 1호의 값은 a - 1층 1호~b-1호까지의 합과 동일하다.
   따라서 a층 b호의 값은 a층 b - 1호 + a-1층 b호다.
4. 입력받은 층과 호에 해당하는 값을 출력한다.


풀이 코드



728x90

'공부 > 문제풀기' 카테고리의 다른 글

백준 1978 - 소수 찾기  (0) 2019.08.05
백준 6064 - 카잉 달력  (0) 2019.08.02
백준 10250 - ACM 호텔  (0) 2019.08.02
백준 2869 - 달팽이는 올라가고 싶다  (0) 2019.08.01
백준 1011 - Fly me to the Alpha Centauri  (0) 2019.08.01
Posted by 아야카
2019. 8. 2. 13:02
728x90

문제 번호: 10250

문제 제목: ACM 호텔

문제 주소: https://www.acmicpc.net/problem/10250


문제 내용

층 수, 방 수, 몇 번째 손님인지가 입력되었을 때 해당 손님에게 배정되어야 할 방 번호를 출력한다.
호수에 따른 이동거리는 1호당 1이다. 높이는 이동 거리에서 계산하지 않는다. 이동 거리가 같은 경우 아래층의 우선순위가 더 높다.
입력은 테스트케이스 수 T가 입력된 후 T회만큼 H, W, N이 입력된다.


테스트 케이스

2
6 12 10
30 50 72
6 12 18


402
1203
603

4
10 10 10
10 10 11
1 1 1
99 99 9801


1001
102
101
9999


문제 풀이

이동거리가 동일할 경우 아래층을 우선으로 하고, 높이는 이동거리에 계산되지 않으므로 각층의 1호실이 먼저 배정되고, 1호실 배정이 완료되면 2호실에 배정되는 방식으로 진행된다.
층 수는 N % H으로 하되, 나머지가 0인 경우에는 입력받은 층 수로 출력하고,
호실은 N / H한 값을 소수점 올림하여 출력한다.


풀이 코드


728x90
Posted by 아야카