728x90
반응형
문제:
알파벳 소문자로 이루어진 N개의 단어가 들어오면 아래와 같은 조건에 따라 정렬하는 프로그램을 작성하시오.
1. 길이가 짧은 것부터
2. 길이가 같으면 사전 순으로
입력:
첫째 줄에 단어의 개수 N이 주어진다. (1<=N<=20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다.
출력:
조건에 따라 정렬하여 단어들을 출력한다. 단, 같은 단어가 여러 번 입력된 경우에는 한 번씩만 출력한다.
풀이 방법:
단어를 정렬하는 기준이 두가지 이다. 그래서 처음 리스트에 담을 때 단어와 단어의 길이를 함께 담아주도록 한다. 이후 단어를 정렬을 할 때 sorted의 key 파라미터를 이용하도록 한다. lambda l : (l[1],l[0]) 과 같이 key 값을 주었는데 이 말은 l[1]은 단어의 길이를 기준으로 우선 정렬을 하고, 만약 같다면 l[0] 단어를 기준으로 즉 사전 순으로 배열하도록 한다.
1 2 3 4 5 6 7 8 9 10 11 | def dictionary(n): l=[] for i in range(n): s=input() l.append((s,len(s))) l=list(set(l)) l=sorted(l,key=lambda l: (l[1],l[0])) for i in l: print(i[0]) n=int(input()) dictionary(n) | cs |
728x90
반응형
'Algorithm > Python' 카테고리의 다른 글
[BOJ]4948.베르트랑 공준 (0) | 2019.04.14 |
---|---|
[BOJ]1929. 소수 구하기 (0) | 2019.04.13 |
[BOJ]6064. 카잉 달력 (0) | 2019.04.11 |
[BOJ]1475. 방번호 (0) | 2019.04.10 |
[BOJ]2775. 부녀회장이 될테야 (0) | 2019.04.09 |