[ BOJ / Python ] 10570번 Favorite Number

황승환·2021년 12월 11일
0

Python

목록 보기
41/498


이번 문제는 케이스의 수만큼 반복하며 입력된 횟수가 가장 많은 수를 찾아 이를 출력하는 문제이다. 여기서 주의할 점은 가장 많은 수가 복수개일 경우 그 중 가장 작은 수를 찾아야 하는 것이다. 이 방법에 대해 고민하다가 내림차순으로 정렬하고 가장 많이 나온 수를 갱신할 때에 비교연산자를 >가 아닌 >=를 사용하여 복수개일 경우 결론적으로 가장 작은 수를 출력하도록 설계하였다.

  • 테스크 개수 n을 입력받는다.
  • 0부터 n까지의 i에 대한 for문을 돌린다.
  • 쪽지개수 v를 입력받는다.
  • 입력 받은 쪽지를 저장할 배열 s를 빈 배열로 초기화한다. (매 테스트마다 새로운 s를 사용하게 된다.)
  • 가장 많이 선택된 횟수를 저장하기 위한 cnt 변수와 가장 많이 선택된 수를 저장하기 위한 answer 변수를 0으로 초기화한다. (매 테스트마다 새로운 cnt, answer를 사용)
  • 0부터 v까지의 j에 대한 for문을 돌린다.
    -> 쪽지를 입력받아 s배열에 넣는다.
  • s배열을 내림차순으로 정렬한다.
  • 0부터 v까지의 j에 대한 for문을 돌린다.
    -> 만약 s[j]의 갯수가 cnt보다 크거나 같다면 cnt와 answer를 s[j]의 갯수와 s[j]로 갱신시킨다.
  • answer를 출력한다.

Code

n=int(input())
for i in range(n):
    v=int(input())
    s=[]
    cnt=0
    answer=0
    for j in range(v):
        s.append(int(input()))
    s.sort(reverse=True)
    for j in range(v):
        if s.count(s[j])>=cnt:
            cnt=s.count(s[j])
            answer=s[j]
    print(answer)

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

0개의 댓글