동백 // 백준 파이썬 1181번 단어 정렬
2021. 11. 1. 16:59ㆍ컴퓨터 사이언스/Algorithm
반응형
반응형
단어 정렬
시간 제한 | 메모리 제한 | 제출 | 정답 | 맞은 사람 | 정답 비율 |
2 초 | 256 MB | 66537 | 27360 | 20368 | 40.353% |
문제
알파벳 소문자로 이루어진 N개의 단어가 들어오면 아래와 같은 조건에 따라 정렬하는 프로그램을 작성하시오.
길이가 짧은 것부터
길이가 같으면 사전 순으로
입력
첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다.
출력
조건에 따라 정렬하여 단어들을 출력한다. 단, 같은 단어가 여러 번 입력된 경우에는 한 번씩만 출력한다.
예제 입력 1
13 but i wont hesitate no more no more it cannot wait im yours |
예제 출력 1
i im it no but more wait wont yours cannot hesitate |
내 코드(틀린 코드)
N = int(input())
tmp = []
for i in range(N):
alpha = input()
# 단어 앞에 그 단어의 길이를 붙이므로, 길이순으로 sort되게 함
lenword = str(len(alpha))+alpha
tmp.append(lenword)
# 중복 문자를 제거해주고, 다시 list형으로 바꿔줌
result1= set(tmp)
tmp = list(result1)
tmp.sort()
for _ in tmp:
# 문자의 맨 앞은 숫자이기에 2번째부터 출력해줌
_ = _[1:]
print(_)
정답 코드
n = int(input())
ans = []
for i in range(n):
# 입력과 동시에 append 해줌
ans.append(input())
# 중복 문자를 제거해주고, 다시 list형으로 바꿔줌
temp = set(ans)
ans = list(temp)
# 알파벳 순서로 정렬해줌
ans.sort()
# 리스트 요소를 길이 순으로 정렬할 때는 sort 메소드에서 key=len
ans.sort(key = len)
for i in ans:
print(i)
반응형
'컴퓨터 사이언스 > Algorithm' 카테고리의 다른 글
동백 // 백준 파이썬 10872번 팩토리얼 (0) | 2021.11.01 |
---|---|
동백 // 백준 파이썬 1264번 모음의 개수 (0) | 2021.11.01 |
동백 // 백준 파이썬 11653번 소인수분해 (0) | 2021.11.01 |
파이썬 369 게임! (0) | 2021.11.01 |
동백 // 백준 파이썬 1929번 소수 구하기 (0) | 2021.11.01 |