온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다.
이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 작성하시오.
첫째 줄에 온라인 저지 회원의 수 N이 주어진다. (1 ≤ N ≤ 100,000)
둘째 줄부터 N개의 줄에는 각 회원의 나이와 이름이 공백으로 구분되어 주어진다.
나이는 1보다 크거나 같으며, 200보다 작거나 같은 정수이고, 이름은 알파벳 대소문자로 이루어져 있고, 길이가 100보다 작거나 같은 문자열이다. 입력은 가입한 순서로 주어진다.
📌 문제 탐색하기
우리가 문제를 이해해가는 과정을 작성하시면 됩니다.
- 문제에서 구해야 하는 최종 정답은 무엇인지 탐색한 과정
- 그 정답을 구하기 위해 어떻게 코드를 구현해야 할지 고민한 과정
- 문제에 들어오는 범위를 파악하며 어떤 알고리즘을 쓸 수 있을지 고민해 가는 과정 등을 작성해주시면 됩니다.
알고리즘 선택
- 회원수 N만큼 탐색하며 리스트를 정렬하는 방식 : sort() 함수 사용
📌코드 설계하기
위의 문제 탐색하기에서 고민한 과정을 토대로 문제 풀이에 대한 실마리를 잡으셨을 것 같습니다.
이제 문제 풀이를 본격적으로 하기 전, 이 문제를 풀기 위한 로드맵을 그려보겠습니다.
어떤 순서로 코드를 작성해야 할지, 어떤 함수들을 작성해야 할지 등을 작성해주시면 됩니다.
처음에는 어려울 수 있지만, 문제를 풀기 전 미리 지도를 그린다라는 생각으로 적어나가 보시면 좋을 것 같습니다 :)
- 가입 회원수를 정수로 입력 받는다.
- 회원수만큼 나이와 이름을 members 리스트안에 리스트타입으로 저장한다.
- 나이 기준으로 정렬한다. : sort() 함수 사용
- 출력결과물과 동일한 형태로 출력한다.
📌 시도 회차 수정 사항 (Optional)
- 무문별하게 “맞았습니다”가 나올때 까지 수정하는 형태의 문제 풀이를 반복하면 , 내가 어떤 실수를 해서 해당 문제를 틀렸는지 모르게 됩니다.
- 틀렸습니다를 받았다면 왜 틀렸는지 고민해보고 , 어떻게 수정할 수 있는지 고민하는 과정을 작성해주시면 됩니다.
- 위에 내가 세울 설계에서 어떤 부분이 틀렸는지도 함께 점검해보세요
- 한번에 맞출수도 있기 때문에 이 칸은 Optional입니다.
📌정답 코드
# 가입 회원의 수 (int형)
N = int(input())
members = []
for t in range(N): # 회원수만큼 나이와 이름 받기
age, name = input().split()
members.append([int(age), name])
# 나이 기준으로 정렬 : 나이가 같을 경우엔 가입순이지만, 이미 입력을 가입순으로 받기때문에 상관없음
members.sort(key=lambda x : x[0])
for m in members:
print(f'{m[0]} {m[1]}')
반응형
'Study > Algorithm' 카테고리의 다른 글
[코테 챌린지] 4일차. 생일 (0) | 2024.08.08 |
---|---|
[코테 챌린지] 3일차. 단어 정렬 (0) | 2024.08.07 |
[코테 챌린지] 1일차. 일곱난쟁이 (0) | 2024.08.05 |
[Optical Flow] 옵티컬 플로우3 - Optical Flow 개념 이해 (0) | 2023.07.03 |
[Optical Flow] 옵티컬 플로우2 - Motion field 개념 이해 (0) | 2023.07.02 |