단순한 그리디 문제였다.
맨 처음에는 그리디가 아니라 dp문제인가 싶었다. 이전에도 풀었던 기록이 있어서 단순한 그리디로도 풀릴 듯해서 바로 푼 문제였다.
코드는 아래와 같다.
import sys
input = sys.stdin.readline
height = []
for _ in range(9):
height.append(int(input()))
diff = sum(height)-100 # 9명의 난쟁이 키의 합과 100의 차이를 구한다
find_two_false = False # find_two_false라는 초기변수를 False로 설정한다.
for i in height:
for j in height[1:]:
if i + j == diff: # height를 돌면서 두 난쟁이의 합이 diff와 같으면
height.remove(i) # 그 난쟁이들은 가짜 난쟁이이므로 제거
height.remove(j)
find_two_false = True # 두 가짜 난쟁이를 찾았으니 find_two_false라는 초기변수를 True로 설정한다.
break
if find_two_false == True: # 두 가짜 난쟁이를 찾았으면
height.sort() # 정렬하고
print(*height,sep="\n") # 한 줄에 하나씩 출력, *를 사용할 때는 sep 사용
break
for문을 통해 print()로 한 줄에 하나씩 출력하는 방법이 아닌
unpacking operator인 *를 사용해서 리스트를 구분자(sep)를 넣어 바로 출력하는 방법을 배웠다.
이전에도 사용했던 방식인데, 다시 감을 살려야 겠다.
*를 사용해서 unpacking한 데이터로 전달해야 sep를 적용할수 있다.
반응형
'컴퓨터 공부 > 📚 Baekjoon(백준)' 카테고리의 다른 글
[백준/알고리즘/python/java] 14499번 - 주사위 굴리기 (2) | 2022.12.12 |
---|---|
[백준/알고리즘/python/java] 1976번 - 여행 계획 (0) | 2022.12.11 |
[백준/알고리즘/python/java] 11723번 - 집합 (0) | 2022.06.28 |
[백준/알고리즘/python/java] 2212번 - 센서 (0) | 2022.03.26 |
[백준/알고리즘/python/java] 5464번 - 주차장 (0) | 2022.03.23 |