
문제
왕비를 피해 일곱 난쟁이들과 함께 평화롭게 생활하고 있던 백설공주에게 위기가 찾아왔다. 일과를 마치고 돌아온 난쟁이가 일곱 명이 아닌 아홉 명이었던 것이다.
아홉 명의 난쟁이는 모두 자신이 "백설 공주와 일곱 난쟁이"의 주인공이라고 주장했다. 뛰어난 수학적 직관력을 가지고 있던 백설공주는, 다행스럽게도 일곱 난쟁이의 키의 합이 100이 됨을 기억해 냈다.
아홉 난쟁이의 키가 주어졌을 때, 백설공주를 도와 일곱 난쟁이를 찾는 프로그램을 작성하시오.
입력
아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다.
출력
일곱 난쟁이의 키를 오름차순으로 출력한다. 일곱 난쟁이를 찾을 수 없는 경우는 없다.
예제 입력 1
20
7
23
19
10
15
25
8
13
예제 출력 1
7
8
10
13
19
20
23

ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
타블렛 개시한 기념 한 번 써봤어~
투포인터를 사용해서 풀어줌

숨어있는 X맨 난쟁이 두명 찾기
1) 입력값을 오름차순으로 정렬해줘야함
2) 총합보다 클 때
3) 총합보다 작을 때
arr = [] #9명의 난쟁이 키
for i in range(9):
a = int(input())
arr.append(a)
arr.sort() # 오름차순 정렬
s = 0 # start 배열의 가장 첫 인덱스 숫자
e = 8 # end 배열의 가장 마지막 인덱스 숫자
total = sum(arr) # 총합에서 2개를 빼서 100일때 찾기
while True:
if (total-arr[s]-arr[e]) == 100:
break
elif (total-arr[s]-arr[e]) < 100: # 총합보다 작을 때
e -= 1
elif (total-arr[s]-arr[e]) > 100: # 총합보다 클 때
s += 1
for i in range(9):
if i != s and i != e: # 인덱스 숫자가 s랑 e가 아닐 때 출력
print(arr[i])
총합보다 클 때 값이 작아지려면 큰 수의 값을 줄여야하기 때문에 e를 -1
총합보다 작을 때 값이 작아지려면 작은 수의 값을 키워줘야 하기 때문에 s를 +1 해줌
아 그리고 정렬과 리스트의 총 합은 그냥 내장함수 썼다.

엑스맨 난쟁이 찾기 끝!
'알고리즘 > BOJ' 카테고리의 다른 글
| [BOJ / 백준] 9012번 괄호 python / 파이썬 스택 (0) | 2022.03.09 |
|---|---|
| [BOJ / 백준] 1918번 후위 표기식 python / 파이썬 후위 표기법 변환/ 파이썬 리스트 문자열 변환 (0) | 2022.02.27 |
| [BOJ / 백준] 2470번 두 용액 python / 파이썬 투포인터 (3) | 2022.02.18 |
| [BOJ / 백준] 2467번 용액 python / 파이썬 투포인터 (0) | 2022.02.17 |
| [BOJ / 백준] 2908번 상수, python 파이썬 숫자랑 문자열을 거꾸로 출력하기 (0) | 2022.02.12 |
댓글