본문 바로가기
알고리즘

[알고리즘/백준] 2303번 숫자 게임 Python 파이썬

by 배애앰이 좋아 2023. 2. 23.
반응형

 

이번 문제는 기존에 풀었던 문제 중에 블랙잭이라는 문제와 비슷한 문제이다.

 

 

각자 받은 5개의 카드 중 3개를 골라 큰 일의 자리를 가지는 사람의 번호를 출력하는 문제로 각자 받은 5개의 카드 중 어떤 3개의 카드를 골라야 일의 자리가 가장 큰지는 모든 경우의 수를 다 확인해주는 완전 탐색을 통해 큰 지 찾아내어 비교하였다. 

 

다음과 같은 코드를 통해 통과하였다.

 

import sys
input = sys.stdin.readline

N= int(input())
biggest_num = 0
big_people = 0

for i in range(N):
    card_list = list(map(int, input().split()))
    big_num = 0
    for j in range(5):
        for k in range(j+1, 5):
            for p in range(k+1, 5):
                num = card_list[j] + card_list[k] + card_list[p]
                if (num%10) > big_num:
                    big_num = (num%10)
    if big_num >= biggest_num:
        biggest_num = big_num
        big_people = i+1

print(big_people)

 

효율적이고 더 간단히 적고 싶다면 파이썬의 순열조합 라이브러리를 이용하면 된다.

아래의 코드로도 통과하였다.

 

import sys
from itertools import combinations
input = sys.stdin.readline

N= int(input())
biggest_num = 0
big_people = 0

for i in range(N):
    card_list = list(map(int, input().split()))
    big_num = 0
    for j in combinations(card_list, 3):
        if big_num < (sum(j)%10) :
            big_num = (sum(j)%10)
    if big_num >= biggest_num:
        biggest_num = big_num
        big_people = i+1

print(big_people)

 

확실히 한번 문제 유형 익히면 비슷한 문제가 나올 때 더 수월히 풀 수 있는 것 같다.

결론은 연습이라는 거지...?ㅠㅠ

반응형

댓글