본문 바로가기

[백준 알고리즘/Python] 2309 일곱 난쟁이

@wonin2022. 2. 13. 11:09

문제

 

 

문제 이해

처음에 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
wonin
@wonin :: wonin의 공부노트

공감하셨다면 ❤️ 구독도 환영합니다! 🤗

목차