티스토리 뷰

728x90
반응형

https://www.acmicpc.net/problem/10814

 

10814번: 나이순 정렬

온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을

www.acmicpc.net

 

나의 풀이

arr = []
for i in range(int(input())):
    #임시 배열
    tmp = []
    #나이(정수), 이름, 들어온 순서를 임시 배열에 저장 
    age,name = input().split()
    tmp.append(int(age))
    tmp.append(name)
    tmp.append(i)
    #최종 배열에 tmp 넣기 
    arr.append(tmp)

#나이순, 가입일 순 정렬
arr.sort(key = lambda x:(x[0],x[2]))
for item in arr:
    print(str(item[0])+' '+item[1])

 

뭔가 마음에 안드는 코드 ,, 

tmp에 하나하나 넣는 방법 말고 어떤 메소드가 없을까 고민해봤는데 zip은 정수는 안된다고 함 ㅠㅠ 

 

 

그래서 본 다른사람 코드 1

word = [input() for _ in range(int(input()))]
word.sort(key=lambda x: int(x.split()[0]))
print("".join(word))

word에 나이 이름 문자열 저장하고, 나이 순으로 정렬 

이 코드는 가입일 순 정렬 안했는데 이미 정렬돼있으니 생각해보니 안해도 되네 ... 

그리고 split() 하면 변수에 저장하지 않는 이상 split()한 대상은 그대로 유지됨을 알 수 있음 

똑똑쓰 ,,, 

 

다른사람코드 2

import sys
input = sys.stdin.readline

n = int(input())
mem_by_age = [[] for _ in range(200+1)]

for _ in range(n):
    l = input()
    age = int(l.split()[0])
    mem_by_age[age].append(l)

print(''.join(''.join(m) for m in mem_by_age))

많은 사람들이 이렇게 풀었다.

나이가 200까지 있으니까 빈 리스트 200개 만들어서 mem_by_age라는 하나의 리스트로 관리.

문자열 입력받고, mem_by_age의 해당 나이 index에 문자열 넣기

 

반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함