기록하고 까먹지 말기

1181 본문

전공/백준

1181

yha97 2022. 9. 7. 23:10

하루 1솔씩 하자는 마인드로 백준을 시작했다.

 

단순하게 정렬을 하는 문제였고 풀이를 시작했다.

 

먼저 딕셔너리를 활용해서 단어랑 해당 단어의 길이를 저장하고

 

길이별로 정렬 -> 같은 길이인 것들을 뽑아내서 또 정렬하려고 했다.

 

그런데 아직 파이썬이 익숙하지 않은지 구현이 잘 안됐다..;;

 

한 30분정도 고민하다가 다른 풀이가 있는지 찾아봤고 아래 사이트를 참고했다.

 

https://velog.io/@1204jh/1181

 

[Python / 파이썬] 백준 1181번

백준 1181번 문제 풀이

velog.io

 

먼저 파이썬에서는 sort() 메소드를 지원하고 해당 메소드는 element의 길이에 따라서도 정렬이 가능하다.

 

또한 상위조건 A와 하위조건 B가 있는 경우 B를 우선 정렬한 후에 A로 정렬해야 한다는 것도 알게 되었다. 

부분적으로 정렬하는 것이 아닌 전체를 통한 정렬이니까.

 

그런데 여기서 또 문제가 있었다. 채점하는데 퍼센트가 잘 안올라갔다. 

 

그래서 질문들을 확인해 본 겨과 sys를 활용하는 것이 좋다는 것을 알게 되었다.

 

그래서 input() 대신 sys.stdin.readline()을 사용, 아래 결과를 얻었다.

 

import sys

n = int(sys.stdin.readline())
words = []

for i in range(n):
    words.append(sys.stdin.readline().strip()) # 입력

temp = set(words) # 중복 제거
words = list(temp)
words.sort() # 단어순으로 정렬
words.sort(key = len) # 길이순으로 정렬

for i in words:
    print(i)

 

 

'전공 > 백준' 카테고리의 다른 글

1269  (0) 2022.09.13
1764  (0) 2022.09.12
10816  (0) 2022.09.12
14425  (0) 2022.09.10
10815  (0) 2022.09.09