반응형
백준 10814번 풀이
문제풀러가기
https://www.acmicpc.net/problem/10814
10814번: 나이순 정렬
온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을
www.acmicpc.net
문제
풀이
1. 나이는 int 형으로 출력!!
*나이를 str로 출력하면 아무리 맞았어도 틀렸습니다가 뜹니다.
2. 리스트 정렬 sort사용 or lambda 사용
코드 1
import sys
N=int(sys.stdin.readline())
arr=[]
for i in range (N):
a,b = map(str,sys.stdin.readline().split())
arr.append([int(a), i, b])
#i추가 이유는 입력 받은 순서대로 정렬하기 위해
arr.sort()
for i in range (len(arr)):
print("%d %s"%(arr[i][0], arr[i][2]))
코드 2
import sys
N=int(sys.stdin.readline())
arr=[]
for i in range (N):
a,b = map(str,sys.stdin.readline().split())
arr.append([int(a), b])
arr.sort(key=lambda x:x[0])
for i in arr:
print(*i, sep=" ") #*i는 리스트 형식 없애줌
1번 코드 풀이
위 코드에서 arr.append([int(a), i ,b])의 i를 넣지 않을 시,
나이가 정렬된 후, 뒤에 이름 알파벳이 정렬되기 때문에, 입력 순서대로의 정렬을 위해서 i를 추가해줌.
2번 코드 풀이
arr.sort(key=lambda x:x[0])에서 arr[i][0]번째 위치 순으로 정렬
=> sorted(arr, key=lambda x:x[0])으로 대체 가능
예제1
arr = [(1,3), (5,2), (2,3), (10,6), (-3, 2), (5,1), (10,4), (10, -3)]
arr.sort(key=lambda x:x[0])
print(arr)
#결과: [(-3, 2), (1, 3), (2, 3), (5, 2), (5, 1), (10, 6), (10, 4), (10, -3)]
예제2
arr = [(1,3), (5,2), (2,3), (10,6), (-3, 2), (5,1), (10,4), (10, -3)]
arr.sort(key=lambda x:x[1])
print(arr)
#결과: [(10, -3), (5, 1), (5, 2), (-3, 2), (1, 3), (2, 3), (10, 4), (10, 6)]
반응형
'코딩테스트 > 코딩테스트 문제' 카테고리의 다른 글
코딩테스트 준비 - 백준15649번 N과 M (1)풀이-DFS에 관해서(파이썬) (0) | 2021.06.08 |
---|---|
코딩테스트 준비 - 백준18870번 좌표압축 풀이:파이썬 딕셔너리 활용 (파이썬) (0) | 2021.06.07 |
코딩테스트 준비 - 백준1181번 단어 정렬 풀이: 파이썬 문자열 정렬(파이썬) (0) | 2021.06.05 |
코딩테스트 준비 - 백준11651번 좌표 정렬하기 풀이(간단한 풀이)(파이썬) (0) | 2021.06.04 |
코딩테스트 준비 - 백준11650번 좌표 정렬하기 풀이(간단한 풀이):파이썬 튜플 괄호 없애기 (파이썬) (0) | 2021.06.03 |
댓글