티스토리 뷰
#include <stdio.h>
int main(void)
{
int num[13][3] = {};
int cnt = 0;
int tmp = 0;
while(tmp++<3) {
int input[8] = {};
char c = 0;
scanf("%d %d %d %d %c %d %d %d %d", &input[0],&input[1],&input[2],&input[3],&c,&input[4],&input[5],&input[6],&input[7]);
if(c == '=') for(int i = 0; i<8; i++) num[input[i]][2]++;
else if(c == '>') {
cnt++;
for(int i = 0; i<4; i++) num[input[i]][1]++;
for(int i = 4; i<8; i++) num[input[i]][0]++;
} else {
cnt++;
for(int i = 0; i<4; i++) num[input[i]][0]++;
for(int i = 4; i<8; i++) num[input[i]][1]++;
}
}
int minus = 0;
int ptr = 0;
int ans[12] = {};
for(int i = 1; i<=12; i++) {
if(num[i][2]) continue;
if(num[i][0] == 0 && num[i][1] == cnt) ans[ptr++] = i;
else if(num[i][1] == 0 && num[i][0] == cnt) {
minus = 1;
ans[ptr++] = i;
}
}
if(ptr > 1) printf("indefinite");
else if(ptr == 0) printf("impossible");
else {
printf("%d", ans[0]);
if(minus) printf("-");
else printf("+");
}
}
풀이
1. 입력을 3번 받는다.
2. 숫자 1부터 12까지 0,1,2의 공간을 준다.
3. = 입력 시 2로, 부등호 입력 시 더 큰 곳은 1, 작은 곳은 0으로 처리한다.
4. 판정하기
0) 1~12의 숫자 들 중 공간 [2]가 1 이상이면 모조품이 아니다!!!
1) 공간[2]는 0이나, 공간[0], [1], 중 하나만 값이 있으며, 그 값이 부등호가 입력된 횟수와 같으면 모조품이라는 의미이다.
2) 1)의 과정을 거친 후 나온 모조품이 여러개이면 -> indefinite 출력
3) 모조품이 아무것도 없으면 -> 모순 -> impossible 출력
4) 모조품이 1개일 경우, 그 숫자를 출력하고, 뒤에 부호를 붙인다.
부등호가 = 인 경우 양 옆에 있는 모든 동전은 모조품이 아니다는 의미가 된다.
ex) 1 2 3 4 5 6 7 8 9 10 11 12
i )1 1 1 0 0 0 1 0
ii )1 1 1 0 0 0 1
iii ) 0 1 0 1 0 1 0 1
-> 동전 2는 1이 3개(=부등호의 개수)이므로 모조품이며 무게는 더 나간다(+);
ex) 1 2 3 4 5 6 7 8 9 A B C
0 0 1 0 1 1 0 1
1 1 1 0 0 0 0 1
0 1 0 0 1 1 1 0
-> 동전 6은 0이 3개(=부등호의 개수)이므로 모조품이며 무게는 덜 나간다(-);
ex) 1 2 3 4 5 6 7 8 9 A B C
0 0 0 0 1 1 1 1
0 0 0 0 1 1 1 1
1 1 1 1 0 0 0 0
-> 모조품이 없다 고로 불가능하다.
ex) 1 2 3 4 5 6 7 8 9 A B C
2 2 2 2 2 2 2 2
2 2 2 2 2 2 2 2
1 0 1 0 0 1 1 0
->모조품이 동전3, 동전 6 2개가 있다, 고로 확실하지 않다.
https://www.acmicpc.net/problem/3363
3363번: 동전
여러분은 양팔 저울 하나와 동전 12개(1, 2, ..., 12 의 번호)를 가지고 있는데, 그 중 하나는 모조품입니다. 모조품은 다른 동전보다 가볍거나 무겁습니다. 양팔 저울로 세 번 측정하여 모조품
www.acmicpc.net
'c언어 > BAEKJOON' 카테고리의 다른 글
c언어 16958번 텔레포트 (백준) (0) | 2023.01.01 |
---|---|
c언어 15723번 n단 논법 (백준) (0) | 2022.12.31 |
c언어 26124번 조명 배치 (백준) (0) | 2022.12.08 |
c언어 2170번 선 긋기 (백준) (0) | 2022.12.08 |
c언어 1744번 수 묶기 (백준) (0) | 2022.10.13 |
- Total
- Today
- Yesterday
- find
- PASCAL
- 그리디
- XOR
- Krustal
- 그래프
- Segment Tree
- C언어
- 브루트포스
- DFS
- 누적합
- union
- 최대공약수
- BFS
- 1835
- 기하학
- 정렬
- 백준
- 스택
- 플로이드
- DP
- 누적 합
- java
- C++
- 1835번
- Lazy Propagation
- 세그먼트 트리
- 덱
- 최소 스패닝 트리
- 오프라인 쿼리
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |