티스토리 뷰

#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

 

최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
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 31
글 보관함