-
[백준 / Python] 1181번 단어 정렬 | 초코더알고리즘/백준 2020. 1. 12. 23:53
https://www.acmicpc.net/problem/1181
1181번: 단어 정렬
첫째 줄에 단어의 개수 N이 주어진다. (1≤N≤20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다.
www.acmicpc.net
접근법
N번만큼 반복문을 돌려서 단어들을 list형태로 words에 저장해줍니다.
words를 정렬해주는데, 1.길이순으로 2.사전순으로 정렬해줍니다.
그런다음 같은 단어가 있다면 제거하고 출력해주어야하는데 처음엔 set()함수를 써서 제거하려다가 계속 오류가 나서 이방법을 사용했습니다.
1. 빈 리스트 result를 하나 만들어줌.
2. words에 있는 원소 중 result에 없는 원소만 출력함.
3. words에서 출력된 원소를 result배열에 저장해둠.
-> 즉 출력된 원소를 빈 리스트에 저장하고 같은 원소를 출력하지 않게 하기 위한 방법
나의풀이
N = int(input()) words = [] result = [] for i in range(N): words.append(list(input())) words.sort(key=lambda x:(len(x),x)) for i in words: if i not in result: print(''.join(i)) result.append(i)
'알고리즘 > 백준' 카테고리의 다른 글
[백준 / Python] 1026번 보물 | 초코더 (0) 2020.01.13 [백준 / Python] 2108번 통계학 | 초코더 (0) 2020.01.13 [백준 / Python] 11650번 좌표 정렬하기 | 초코더 (0) 2020.01.12 [백준 / Python] 10814번 나이순 정렬 | 초코더 (0) 2020.01.12 [백준 / Python] 11651번 좌표 정렬하기 2 | 초코더 (0) 2020.01.12