-
2535. [Python]아시아 정보올림피아드Python_알고리즘/Silver V 2023. 3. 29. 23:32
1. 문제
https://www.acmicpc.net/problem/2535
2535번: 아시아 정보올림피아드
첫 번째 줄에는 대회참가 학생 수를 나타내는 N이 주어진다. 단, 3 ≤ N ≤ 100이다. 두 번째 줄부터 N개의 줄에는 각 줄마다 한 학생의 소속 국가 번호, 학생 번호, 그리고 성적이 하나의 빈칸을 사
www.acmicpc.net
2. 접근 방법
- 시간 제한: 1초
- 메모리 제한: 128MB
- 정렬
- 구현
3. 파이썬 코드
N = int(input()) ans_list = [] for _ in range(N): # 인풋을 리스트 형태로 받아옴 answer = list(map(int,input().split())) # 인풋 리스트를 리스트에 추가 ans_list.append(answer) # 최대 몇개의 나라가 존재하는지 갯수 확인 max_value = max(ans_list[:]) max_value = max_value[0] # 나라의 갯수만큼 리스트 생성하여 메달을 몇개 보유한지 확인 cont_list = [0]*max_value # 리스트를 점수순으로 정렬 ans_list.sort(reverse=True,key=lambda x : x[:][2]) reword_list = [] for i in ans_list: # 상받을 사람이 3명이면 반복문 탈출 if len(reword_list) == 3: break # 상받을 사람들 리스트 생성 else: # 그 나라의 메달의 갯수가 2개 미만일 경우 메달갯수를 1더해주고 상리스트에 추가 if cont_list[i[0]-1] < 2: cont_list[i[0]-1] += 1 reword_list.append([i[0],i[1]]) for j in reword_list: print(*j)
4. 문제를 풀고난 후 생각
- 제일 처음 풀었던 방법으론 나라가 3개가 존재하는 줄 알고 아래와 같이 나라 3개만 체크했다.
N = int(input()) ans_list = [] for _ in range(N): answer = list(map(int,input().split())) ans_list.append(answer) ans_list.sort(reverse=True,key=lambda x : x[:][2]) first_count = 0 second_count = 0 third_count = 0 reword_list = [] for i in ans_list: if len(reword_list) == 3: break else: if i[0] == 1: if first_count < 2: first_count += 1 reword_list.append([i[0],i[1]]) elif i[0] == 2: if second_count < 2: second_count += 1 reword_list.append([i[0],i[1]]) elif i[0] == 3: if third_count < 2: third_count += 1 reword_list.append([i[0],i[1]]) for j in reword_list: print(*j)
- 제출 후 문제를 다시 읽어보니 나라의 갯수가 정해진 것이 없었기 때문에 나라의 갯수를 체크해줄 max 부분을 추가하여 문제를 해결하였다.
- 최대 나라의 갯수만큼 리스트를 생성하여 각 나라별 메달을 몇개를 확보했는지 체크해 주었고 reword_list 를 통하여 상을 몇개 받았는지 체크하여 금,은,동 3개가 나왔을 경우 break를 걸어 탈출해줬다.
- 항상 문제를 읽을때 조건이나 제약사항을 꼼꼼히 확인해야 겠다.
5. 문제를 푸는데 도움이 되는 지식
- 정렬 Lambda
'Python_알고리즘 > Silver V' 카테고리의 다른 글
8979. [Python]올림픽 (0) 2023.04.04 2740. [Python]행렬 곱셈 (0) 2023.03.31 1817. [Python]짐 챙기는 숌 (0) 2023.03.27 14916. [Python]거스름돈 (0) 2023.02.02 1439. [Python]뒤집기 (0) 2023.02.01