728x90
https://www.acmicpc.net/problem/2798
<조건>
1. n(카드의 개수), m(카드가 도달해야할 수) 입력
2. 카드에 쓰여진 수 입력. 단, 합이 M을 넘지 않는 카드 3장을 찾을 수 있는 경우만
3. 3장의 수를 뽑아 합산한 결과 출력
#입력
n, m=map(int, input().split()) #카드의 개수, 카드가 도달해야 하는 수
numList=list(map(int, input().split())) #카드에 적혀있는 수
result=0
#카드 뽑기
for i in range(0, n):
for j in range(i+1,n): #for문 조건 유심히 볼 것!
for k in range(j+1,n):
if numList[i]+numList[j]+numList[k] <= m:
result=max(result, numList[i]+numList[j]+numList[k])
#출력
print(result)
책의 예제 문제나 연습 문제가 아니여서 문제 이해하는게 어려웠다. 수능 국어 영역 독해가 괜히 있는게 아니다.
문제 풀이 팁?
사실 다른 건 다 순조로웠는데 단, 합이 M을 넘지 않는 카드 3장을 찾을 수 있는 경우만 이라는 조건을 구현하는 부분이 이해하기 어려웠다.
근데 말 그래로다.. 그냥 입력한 숫자 카드의 모든 경우의 수를 조건문 검사하면 되는 것...
매일 문제 은행 식의 문제만 풀어서인지 굉장히 간단한 문제였는데 푸는데 많이 헤맸다.(민망)
'python > 백준_프로그래머스' 카테고리의 다른 글
[백준 2039번] 일곱 난쟁이 python과 combinations (0) | 2022.02.03 |
---|---|
[백준 1026번] 보물 python과 리스트 정리 (0) | 2022.02.02 |
[백준 11047번] 동전0(그리디 알고리즘) python (0) | 2022.01.05 |
[백준 1920번] 수 찾기(이진 탐색) python (0) | 2021.12.30 |
[백준 2750번] 수 정렬하기 python (0) | 2021.12.28 |