2019. 8. 6. 11:16
728x90

문제 번호: 4153

문제 제목: 직각삼각형

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


문제 내용

주어진 세 변의 길이로 직각삼각형 유무를 출력한다. 맞을 경우에는 right, 틀릴 경우에는 wrong을 출력한다.
0 0 0 이 입력되면 종료한다.


테스트 케이스

6 8 10
25 52 60
5 12 13
0 0 0

right
wrong
right


문제 풀이

입력된 값 A, B, C에 대해 각 변에 대한 제곱합을 비교하면 된다.
A * A + B * B == C * C
B * B + C * C == A * A
C * C + A * A == B * B


풀이 코드



728x90

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

백준 1002 - 터렛  (0) 2019.08.06
백준 3053 - 택시 기하학  (0) 2019.08.06
백준 3009 - 네 번째 점  (0) 2019.08.06
백준 1085 - 직사각형에서 탈출  (0) 2019.08.06
백준 9020 - 골드바흐의 추측  (0) 2019.08.06
Posted by 아야카
2019. 8. 6. 11:08
728x90

문제 번호: 3009

문제 제목: 네 번째 점

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


문제 내용

점 세 개가 주어졌을 때 직사각형을 이룰 수 있는 네 번째 점을 출력한다.


테스트 케이스

30 20
10 10
10 20

30 10

10 10
30 10
10 20

30 20

10 20
30 10
30 20

10 10

30 20
10 10
30 10

10 20


문제 풀이

사각형 중 모자란 한 점을 찾는 것이므로 세 점에서 짝이 없는 수를 찾으면 된다.
XOR 연산자는 비트가 서로 다르면 1, 같으면 0이 된다. 이와 관련하여 갖는 성질로 아래 두 가지가 있다.
1. 값이 0인 변수에 A 값의 XOR 연산을 하면 해당 변수는 A가 된다.
 - 모든 비트가 0이므로 1인 비트에 대한 부분만 1이 되기 때문
2. 값이 A인 변수에 B 값의 XOR 연산을 두 번 하면 원래의 값 A가 된다.
 - 최초 연산일 때 값이 변경된 부분만 다시 변경되기 때문.
 - 예시) 01010101 ^ 00110011 ^ 00110011 = 01100110 ^ 00110011 = 01010101
이러한 성질을 이용하면 사각형의 나머지 꼭지점을 빠르게 찾아낼 수 있다.


풀이 코드

728x90

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

백준 3053 - 택시 기하학  (0) 2019.08.06
백준 4153 - 직각삼각형  (0) 2019.08.06
백준 1085 - 직사각형에서 탈출  (0) 2019.08.06
백준 9020 - 골드바흐의 추측  (0) 2019.08.06
백준 4948 - 베르트랑 공준  (0) 2019.08.06
Posted by 아야카
2019. 8. 6. 10:50
728x90

문제 번호: 1085

문제 제목: 직사각형에서 탈출

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


문제 내용

(0, 0)과 (w, h)를 꼭지점으로 하는 직사각형 내의 (x, y)에서 직사각형을 벗어나는 최소 거리를 출력한다.
입력은 x y w h 순서로 이루어진다.


테스트 케이스

1000 1000 999 1

1

1000 1000 999 999

1

1000 1000 1 1

1

1000 1000 1 999

1

1000 1000 500 500

500


문제 풀이

x, y, w-x, h-y를 각각 비교하여 가장 작은 수를 출력하면 된다.


풀이 코드



728x90

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

백준 4153 - 직각삼각형  (0) 2019.08.06
백준 3009 - 네 번째 점  (0) 2019.08.06
백준 9020 - 골드바흐의 추측  (0) 2019.08.06
백준 4948 - 베르트랑 공준  (0) 2019.08.06
백준 1929 - 소수 구하기  (0) 2019.08.06
Posted by 아야카
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 아야카