문제
온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 작성하시오.
입력
첫째 줄에 온라인 저지 회원의 수 N이 주어진다. (1 ≤ N ≤ 100,000)
둘째 줄부터 N개의 줄에는 각 회원의 나이와 이름이 공백으로 구분되어 주어진다. 나이는 1보다 크거나 같으며, 200보다 작거나 같은 정수이고, 이름은 알파벳 대소문자로 이루어져 있고, 길이가 100보다 작거나 같은 문자열이다. 입력은 가입한 순서로 주어진다.
출력
첫째 줄부터 총 N개의 줄에 걸쳐 온라인 저지 회원을 나이 순, 나이가 같으면 가입한 순으로 한 줄에 한 명씩 나이와 이름을 공백으로 구분해 출력한다.
예제 입력 1 복사
3
21 Junkyu
21 Dohyun
20 Sunyoung
예제 출력 1 복사
20 Sunyoung
21 Junkyu
21 Dohyun
출처
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | import sys input = sys.stdin.readline N = int(input().strip()) result = [] for i in range(1, N + 1): user = input().split() user.append(i) result.append(user) result.sort(key=lambda x: (x[0], x[2])) for i in range(0, N): print(result[i][0], result[i][1]) |
3
21 Junkyu
21 Dohyun
20 Sunyoung
20 Sunyoung
21 Junkyu
21 Dohyun
테스트케이스는 제대로 출력하는데 뭐가 문제일까요 ?
로직은 입력받으면서 가입한 순서를 마지막에 index로 추가 해 준 다음
먼저 나이로 정렬하고 그 후 가입 순서 index 순서로 정렬을 했습니다 ㅠㅠ
1 a 1 c 1 b 2 d 5 e 3 f 7 g 하면 뭐나옴
1 a 1 c 1 b 2 d 3 f 5 e 7 g
이렇게요
무슨 테스트케이스가 오류인지는 나도 잘 노르겠네 쩝... 게시판 질문검색 들어가서 테스트케이스 찾아봐
형님 혹시 히든케이스라고하나요? 코테 공부 좀 하다보면 보이는 것인지 ㅠ..ㅠ
4 10 a 5 b 20 c 100 d 이것도 한번 해볼래?
앞에 숫자 문자열로 인식하는 것같은데 한번 해봐
아 맞네요.. 14번째줄 int(x[0]) 으로 수정하니까 맞았네요 ㅠㅠ 감사합니다 잘 수 있겠어요
잘자 ㅎㅎ
간단한 문제였네요 감사합니다 ㅠㅠ
그러게 왜그렇지.. 이것만 해결하고 자야겠다 궁금하네
저도 한번 찾아보려구요 ㅠㅠ
짤려서 안보이는데 값을 나누지 말고 2차원 배열로 하셈
아 배열로 입력받고, 입력순번 3번째 인덱스로 추가한다음 이것을 리스트에 넣어서 2차원배열로 만든 후 첫번째인덱스(나이) 로 정렬 후 세번째인덱스(가입 순번) 으로 정렬했습니다 ㅠㅠ
이거 처음에 받는 나이가 스트링으로 되어서 100이 20보다 작다고 나옴. 1이 2보다 작으니까
대충 input 문제일거라고 생각은 했는데...
그냥 user에 i를 append 하기 전 후를 print(user)만 해봤는데 i는 int고 나이는 따옴표 있는 스트링인게 보이더라구
맞습니다 이게 문제였어요 ㅠㅠ 항상 습관적으로 받을 때 int로 하는데 이번에 문자열 같이 받아서 안했더니 그 부분이 에러가 났더라구요 감사합니다!!