문제
문제 이해
처음에 7명의 난쟁이로 100을 구하는 방법을 썻는데 3중 for문으로 나와 답이 안나왔씁니다. 고려해야할 경우도 많았구요. 다른 접근방법을 생각해보니 전체 난쟁이 중에서 2명만 거르면 되는거였습니다.
전체 난쟁이의 합 - (다른 난쟁이 2명) 을 하면 진짜 난쟁이는 100의 값을 가질 수 있습니다.
코드
result = []
for i in range(9):
result.append(int(input()))
sum_a = sum(result)
Flag= False
for i in range(9):
for j in range(i+1,9):
if(100 == sum_a -(result[i] + result[j])):
result[i] = 0
result[j] = 0
result.sort()
Flag = True
break
if(Flag):
break
for k in range(2, len(result)):
print(result[k])
진짜 난쟁이는 result에 담기고 가짜난쟁이들은 0으로 치환했습니다.
이 때 Flag는 2중 for을 빠져나가기 위해 필요합니다.
만약 난쟁이가 [5, 5,10, 5, 5, 20, 20, 20, 20] 로 들어오면 5, 5 2개가 다른 난쟁이 입니다.
728x90
'알고리즘 > 백준알고리즘' 카테고리의 다른 글
[백준 알고리즘/Python] 1476 날짜 계산 (0) | 2022.02.14 |
---|---|
[백준 알고리즘/Python] 3085 사탕 게임 (0) | 2022.02.13 |
[백준 알고리즘/Python] 1912 연속합 (0) | 2022.02.10 |
[백준 알고리즘/Python] 1912 연속합 (0) | 2022.02.08 |
[백준 알고리즘/Python] 140023 가장 긴 증가하는 부분 수열4 (0) | 2022.02.07 |