출처: www.acmicpc.net/problem/3040
백설 공주와 일곱 난쟁이 스페셜 저지출처다국어분류
시간 제한 | 메모리 제한 | 제출 | 정답 | 맞은 사람 | 정답 비율 |
1 초 | 128 MB | 4818 | 3241 | 2847 | 70.488% |
문제
매일 매일 일곱 난쟁이는 광산으로 일을 하러 간다. 난쟁이가 일을 하는 동안 백설공주는 그들을 위해 저녁 식사를 준비한다. 백설공주는 의자 일곱개, 접시 일곱개, 나이프 일곱개를 준비한다.
어느 날 광산에서 아홉 난쟁이가 돌아왔다. (왜 그리고 어떻게 아홉 난쟁이가 돌아왔는지는 아무도 모른다) 아홉 난쟁이는 각각 자신이 백설공주의 일곱 난쟁이라고 우기고 있다.
백설공주는 이런 일이 생길 것을 대비해서, 난쟁이가 쓰고 다니는 모자에 100보다 작은 양의 정수를 적어 놓았다. 사실 백설 공주는 공주가 되기 전에 매우 유명한 수학자였다. 따라서, 일곱 난쟁이의 모자에 쓰여 있는 숫자의 합이 100이 되도록 적어 놓았다.
아홉 난쟁이의 모자에 쓰여 있는 수가 주어졌을 때, 일곱 난쟁이를 찾는 프로그램을 작성하시오. (아홉 개의 수 중 합이 100이 되는 일곱 개의 수를 찾으시오)
입력
총 아홉개 줄에 1보다 크거나 같고 99보다 작거나 같은 자연수가 주어진다. 모든 숫자는 서로 다르다. 또, 항상 답이 유일한 경우만 입력으로 주어진다.
출력
일곱 난쟁이가 쓴 모자에 쓰여 있는 수를 한 줄에 하나씩 출력한다.
예제 입력 1
7
8
10
13
15
19
20
23
25
예제 출력 1
7
8
10
13
19
20
23
예제 입력 2
8
6
5
1
37
30
28
22
36
예제 출력 2
8
6
5
1
30
28
22
sevenD에는 기존 7명의 난쟁이에 대한 숫자 정보가 담겨져 있다.
전체 합에서 2명이 거짓이니 2명을 빼고 나머지를 더한 숫자가 100일 경우를 찾아내야 한다.
따라서 아래와 같이 중첩 for-if-for문을 통해 계속해서 반복 실행하다보면 결과를 알 수 있다.
아래의 sorted는 정렬함수로 리스트 원본 값은 그대로 두고, 정렬 값을 반환한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
sevenD= [int(input()) for _ in range(9)]
answer = False
for i in range(8):
if answer: #답이 나왔다면 BREAK
break
for j in range(i+1, 9):
if sum(sevenD) - sevenD[i] - sevenD[j] == 100: #2명을 제외한 7명 값이 100일 경우,
sevenD.pop(i)
sevenD.pop(j-1)
for k in sorted(sevenD): #SORTED 나열
print(k)
answer = True #답이 나옴
break
|
cs |
'Baekjoon Online' 카테고리의 다른 글
[python] 백준 1526번_평균 (0) | 2021.01.18 |
---|---|
[python] 백준 1110번_더하기 사이클 (0) | 2021.01.17 |
[python] 백준 1475번_방 번호 (0) | 2021.01.15 |
[python] 백준 2525번_오븐 시계 (0) | 2021.01.14 |
[python] 백준 2941번_크로아티아 알파벳 (0) | 2021.01.13 |