728x90
https://www.acmicpc.net/problem/2309
<조건>
<풀이>
#입력
tall_list= [int(input()) for i in range(9)]
tall_sum=0 #일곱 난쟁이의 키 합
for t in tall_list:
tall_sum+=t
tall_sum-=100
sum=0
flag=True; i=0
#연산
while(flag and i<9):
for j in tall_list:
if i!=tall_list.index(j):
sum=tall_list[i]+j
if sum==tall_sum:
del tall_list[i] #인덱스 번호로 지우기
tall_list.remove(j) #값으로 지우기, 원소 하나가 사라져서 인덱스 번호가 달라지므로
flag=False
break
i+=1
#출력
tall_list.sort()
for i in tall_list:
print(i)
사실 한 번에 풀었는데 출력을 잘못해서 틀린 케이스. 바보 멍충이
알고리즘은 간단하다. 전체 합에서 - 100 = 남는 값의 합을 가진 난쟁이 두명을 제외하면 된다.
<코드 갱신 및 combinations>
from itertools import combinations
#입력
tall_list= [int(input()) for _ in range(9)]
#연산 및 출력
for i in combinations(tall_list, 7):
if sum(i)==100:
for j in sorted(i):
print(j)
break
다른 사람들의 풀이를 보니 전체적으로 combinations(조합)라는 함수를 많이 사용한 것 같다.
https://docs.python.org/ko/3/library/itertools.html
모듈은 itertools이다.
실험을 해보니 for문을 쓰지 않고 combinations를 사용하면 값은 나오지 않는다. 이때는 list() 함수를 써주면 모든 조합이 리스트 안에 튜플 형태로 나온다.
for문에 쓸 때는 어차피 인자 값으로 하나하나 들어가서 출력물은 똑같은 것 같다.
다만, list를 활용하는게 좀 더 빠른 코딩이 되는 것 같다..
for i in list(combinations(tall_list, 7)): #68초
for i in combinations(tall_list, 7): #72초
이번에 백준에 랭킹이 있다는 것과 백준 내에서 풀이를 볼 수 있다는 걸 알게 되었다.
- 랭킹
나의 랭킹은 현기준 브론즈 4. 총 15문제를 풀었다. 보는 방법은 타 사이트에서 찾아보길 바란다.
- 백준 내 풀이
이건 일단 문제의 정답을 맞혀야 풀 수 있다. 풀고나서 보니까 무슨 두줄 만에 푸는 정답들이 있다. 모듈 선언 하나. 코드 하나. 저런 사람들이 카카오를 가는 걸까...?
'python > 백준_프로그래머스' 카테고리의 다른 글
[프로그래머스] 해시-의상 (python) 눈물나는 삽질쇼 (0) | 2023.09.05 |
---|---|
[백준 1100번] 하얀 칸 python과 eval 함수 (4) | 2022.02.04 |
[백준 1026번] 보물 python과 리스트 정리 (0) | 2022.02.02 |
[백준 11047번] 동전0(그리디 알고리즘) python (0) | 2022.01.05 |
[백준 1920번] 수 찾기(이진 탐색) python (0) | 2021.12.30 |