728x90
반응형
https://www.acmicpc.net/problem/17254
문제의 접근 방법
"키보드가 눌린 시간 순서대로 출력 -> 번호가 작은 키보드부터 누른 키가 출력됨"
위 순서로 정렬하기
내가 막혔던 부분
출력된 시간 순서대로 정렬하는 것만 생각함 -> 출력된 시간이 같을 경우 번호가 작은 키보드 순으로 정렬하는 조건을 포함시키지 않았어서 오답
문제 풀이 방법
키보드 개수(n), 키보드를 누르게 될 횟수(m)를 입력받기 -> m개의 줄만큼 정수 a,b와 문자 c 입력받아 형변환 시켜주기 -> 미리 선언해 둔 빈 리스트 arr에 a,b,c값을 추가하기 -> lamda 함수를 사용해서 arr의 두 번째 인덱스인 눌린 시간을 기준으로 오름차순 정렬하고, 만약 이 값이 같다면 첫 번째 인덱스인 키보드 번호를 기준으로 오름차순 정렬 -> 출력 형식에 맞춰서 출력!
소스코드
n,m = map(int, input().split())
arr = []
for _ in range(m):
a,b,c = input().split()
a,b = int(a), int(b)
c = str(c)
arr.append([a,b,c])
arr.sort(key=lambda x: [x[1],x[0]])
[ print(arr[i][2], end='') for i in range(len(arr)) ]
728x90
반응형
'백준 write-up > 정렬 & 그리디' 카테고리의 다른 글
[백준] 전자레인지 : 10162번 - Python (0) | 2021.08.04 |
---|---|
[백준] 설탕 배달 : 2839번 - Python (0) | 2021.08.04 |
[백준] 카우버거 : 15720번 - Python (0) | 2021.08.01 |
[백준] 접두사 찾기 : 14426번 - Python (0) | 2021.08.01 |
[백준] 카드 바꿔치기 : 18766번 - Python (0) | 2021.08.01 |