[백준] 단어정렬

[백준] 단어정렬_1316

[백준] 단어정렬

단어정렬

풀이

문자열 문제이다. set과 sort의 특징을 활용해서 풀면 된다.

  1. 생각해야할 점.
    • set을 이용해서 중복된 문자를 제거해야한다.
    • sort를 이용해서 단어 길이별 정렬, 같은 길이 안에 문자별 정렬을 해줘야한다.
    • 길이 별로 index가 담긴 메모리를 설정해줘서 각각 sort한 값을 extend해준다.
  2. 생각할 때 막히는 부분
    • length 마다 다른 것을 어떻게 처리해야할까? -> 메모리 설정해줘서 각각 sort 할 수 있게 함..
  3. 다른 풀이
    • set을 한 후에, (길이, 문자열)로 리스트를 만들어서 sort하자.
      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)

태그: ,

카테고리:

업데이트: