[백준] 단어정렬
[백준] 단어정렬_1316
단어정렬
풀이
문자열 문제이다. set과 sort의 특징을 활용해서 풀면 된다.
- 생각해야할 점.
- set을 이용해서 중복된 문자를 제거해야한다.
- sort를 이용해서 단어 길이별 정렬, 같은 길이 안에 문자별 정렬을 해줘야한다.
- 길이 별로 index가 담긴 메모리를 설정해줘서 각각 sort한 값을 extend해준다.
- 생각할 때 막히는 부분
- length 마다 다른 것을 어떻게 처리해야할까? -> 메모리 설정해줘서 각각 sort 할 수 있게 함..
- 다른 풀이
- set을 한 후에, (길이, 문자열)로 리스트를 만들어서 sort하자.
sort의 특징으로 첫번째가 정렬되면, 다음 것도 알아서 정리해준다.
- set을 한 후에, (길이, 문자열)로 리스트를 만들어서 sort하자.
n = int(input())
data = [input() for _ in range(n)]
data = sorted(list(set(data)), key=len)
n_data = [[] for _ in range(51)]
result = []
for i in range(len(data)):
n_data[len(data[i])].append(data[i])
for i in n_data:
if len(i) > 0:
i.sort()
result.extend(i)
for res in result:
print(res)
다른 풀이
n = int(input())
data = [input() for _ in range(n)]
data = list(set(data))
result = []
for word in data:
result.append((len(word), word))
result.sort()
for res in result:
print(res)