공부하기/백준

[Python] 백준 풀기 1181 - 단어 정렬

XEV 2022. 11. 19. 20:48

파이썬 백준 1181번

실버5

https://www.acmicpc.net/problem/1181

 

1181번: 단어 정렬

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

www.acmicpc.net

 

 

 

 

 

 

문제 보기

분류: 문자열, 행렬

 

 

 

 

 

문제 풀기

한 단계 한 단계 set() 과 sort() 함수를 사용하여 풀었다.

 

 

주어진 단어들을 리스트에 입력받고

 

set() 을 사용하여 중복제거

    word_ls = list(set(word_ls))

 

sort() 를 사용하여 알파벳 순으로 정렬

    word_ls.sort()

 

sort(key = len) 을 사용하여 문자 길이 순으로 정렬

    word_ls.sort(key = len)

 

 

 

 

 

코드 보기

import sys
inputdata = sys.stdin.readline

def fnSortWords(word_ls):
    ## 중복 제거
    word_ls = list(set(word_ls))
    # print(word_ls)          # test print
    
    ## 알파벳 순으로 정렬
    word_ls.sort()
    # print(word_ls)          # test print
    
    ## 문자 길이 순으로 정렬
    word_ls.sort(key = len)
    # print(word_ls)          # test print
    
    return word_ls


if __name__ == "__main__":
    N = int(inputdata().strip())
    word_ls = [str(inputdata().strip()) for _ in range(N)]
    # print(word_ls)          # test print
    
    ## return 받은 결과를 세로로 출력
    result = fnSortWords(word_ls)
    for r in result:
        print(r)

 

 

 

 

 

추가 하기

import sys
inputdata = sys.stdin.readline

def fnSortWords(word_ls):
    ## 중복 제거
    word_ls = list(set(word_ls))
    print(word_ls)          # test print
    
    ## 알파벳 순으로 정렬
    word_ls.sort()
    print(word_ls)          # test print
    
    ## 문자 길이 순으로 정렬
    word_ls.sort(key = len)
    print(word_ls)          # test print
    
    return word_ls


if __name__ == "__main__":
    N = int(inputdata().strip())
    word_ls = [str(inputdata().strip()) for _ in range(N)]
    print(word_ls)          # test print
    
    ## return 받은 결과를 세로로 출력
    result = fnSortWords(word_ls)
    for r in result:
        print(r)



# 13
# but
# i
# wont
# hesitate
# no
# more
# no
# more
# it
# cannot
# wait
# im
# yours


# ['but', 'i', 'wont', 'hesitate', 'no', 'more', 'no', 'more', 'it', 'cannot', 'wait', 'im', 'yours']
# ['hesitate', 'yours', 'no', 'more', 'wont', 'cannot', 'but', 'it', 'wait', 'im', 'i']
# ['but', 'cannot', 'hesitate', 'i', 'im', 'it', 'more', 'no', 'wait', 'wont', 'yours']
# ['i', 'im', 'it', 'no', 'but', 'more', 'wait', 'wont', 'yours', 'cannot', 'hesitate']


# i
# im
# it
# no
# but
# more
# wait
# wont
# yours
# cannot
# hesitate