[ BOJ / Python ] 숫자 게임

황승환·2021년 12월 1일
0

Python

목록 보기
38/498

이번 문제는 카드의 합의 모든 경우를 비교하여 일의자리가 가장 큰 경우를 찾아 해결하였다. 입력받는 경우와 3개의 카드를 선택하는 경우를 모두 구하기 위해서 4중 for문을 사용해야해서 시간 제한을 벗어날까 걱정했지만 수의 범위가 크지 않아 시간 초과는 발생하지 않았다.

  • 사람의 수인 n을 입력받는다.
  • 카드 3개의 합의 일의자리 수 중 가장 큰것을 저장할 answer변수를 선언한다.
  • 가장 큰 수를 가지게 되는 사람의 번호를 저장할 idx변수를 선언한다.
  • 0부터 n까지의 i에 대한 for문을 돌린다.
    -> i+1번 사람이 가지게 되는 5장의 카드를 입력받는다.
    -> 0부터 3까지의 j에 대한 for문을 돌린다.
    -> j+1부터 4까지의 k에 대한 for문을 돌린다.
    -> k+1부터 5까지의 l에 대한 for문을 돌린다.
    -> 만약 card[j]+card[k]+card[l]을 10으로 나눈 나머지 값이 answer보다 크거나 같다면 idx에 i+1을 저장하고 answer도 card[j]+card[k]+card[l]을 10으로 나눈 나머지 값으로 갱신한다. 이때 크거나 같은 경우로 두는 이유는 이긴 사람이 여러명일 경우 가장 큰 번호를 저장한다고 명시되어있기 때문이다.
  • idx를 출력한다.

Code

n=int(input())
answer=0
idx=0
for i in range(n):
    card=list(map(int, input().split()))
    for j in range(3):
        for k in range(j+1,4):
            for l in range(k+1, 5):
                if (card[j]+card[k]+card[l])%10>=answer:
                    idx=i+1
                    answer=(card[j]+card[k]+card[l])%10
print(idx)

profile
꾸준함을 꿈꾸는 SW 전공 학부생의 개발 일기

0개의 댓글