관리 메뉴

솜씨좋은장씨

[BaekJoon] 1181번 : 단어 정렬 (Python) 본문

Programming/코딩 1일 1문제

[BaekJoon] 1181번 : 단어 정렬 (Python)

솜씨좋은장씨 2021. 5. 9. 00:46
728x90
반응형

코딩 1일 1문제 오늘의 문제는 백준의 단어 정렬 입니다.

 

1181번: 단어 정렬

첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다.

www.acmicpc.net

Solution

word_count = int(input())

words = []

for i in range(word_count):
    word = input()
    
    if (len(word), word) not in words:
        words.append((len(word), word))
    
answer = sorted(words, key=lambda x: (x[0], x[1]))

for ans in answer:
    print(ans[1])

Solution 풀이

먼저 input으로 받은 단어를 words라는 리스트에 (단어의 길이, 단어) 튜플을 만들어 append 시켜줍니다.

이때 중복된 단어는 출력하지 않아야하므로 (단어의 길이, 단어) 이 튜플이 이미 words라는 리스트에 있는지 없는지

확인하고 없을 경우에만 words리스트에 담아줍니다.

그 다음 sorted와 key=lambda 조건을 활용하여 길이가 짧은 경우 앞으로, 단어의 사전순으로 정렬을 시킵니다.

마지막으로 정렬된 리스트에서 단어만 뽑아 print 하면 끝!

 

SOMJANG/CODINGTEST_PRACTICE

1일 1문제 since 2020.02.07. Contribute to SOMJANG/CODINGTEST_PRACTICE development by creating an account on GitHub.

github.com

Comments