728x90
문제 링크: https://www.acmicpc.net/problem/1181
1181번: 단어 정렬
첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다.
www.acmicpc.net
❌ 1차시도 실패
중복되는 데이터를 제거해야하는 데 그냥 출력해부렸다.😝
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
# 1차시도(실패)---------------------
import sys
n=int(sys.stdin.readline())
# 2차원 리스트를 만들어요
# ex)단어길이가 1이면 list[1]에 들어감
len_list=[[]*51 for _ in range(51)]
for _ in range(n):
num=input()
len_list[len(num)].append(num)
# sort 진행하고 출력해요
for i in range(1,51):
len_list[i].sort()
for j in len_list[i]:
print(j)
|
cs |
❓ 정답은 ??
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
import sys
n=int(sys.stdin.readline())
# 2차원 리스트를 만들어요
# ex)단어길이가 1이면 list[1]에 들어감
len_list=[[] for _ in range(51)]
for _ in range(n):
num=input( )
len_list[len(num)].append(num)
# sort 진행하고 출력해요
for i in range(1,51):
#len_list[i]리스트 값을 set로 바꿔서 중복제거
len_list[i]=set(len_list[i])
#다시 list로 바꿔서 sort하기
len_list[i]=list(len_list[i])
len_list[i].sort( )
for j in len_list[i]:
print(j)
|
cs |
💯 풀이 과정
len_list 리스트를 만들고 [[ ], [ ] ...... [ ]] 이때 리스트는 0부터 시작해버리니 51개를 만들어줘야함
그 리스트에는 list[1]에는 단어길이가 1인 아이들이, list[2]에는 단어길이가 2인 아이들이...
쭉 반복하며 넣어준다.
2차원리스트에 append하는 거기에 헷갈리지 않게 잘 넣어준다.
set는 중복이 되지 않는 다른 점을 이용해 잠시 세트로 바꿔줬다가 다시 리스트로 만들어 부렸다
너무 아날로그 방식처럼 대입한거 아닌가 생각했지만, 맞았다고 뜨니 스킵 ㅋㅋㅋ
😎오늘의 한줄평: 문제를 잘 읽자. 조건 빼먹지 말고
728x90
'😁 빅데이터 문제 풀기 & Study > - BAEKJOON 문제' 카테고리의 다른 글
| [4673번] 셀프 넘버 / python3 (재도전 후 풀어냈으나...) (0) | 2021.11.11 |
|---|---|
| [1929번] 소수 구하기 / python3 (다시 만난 소수) (0) | 2021.11.11 |
| [1316번] 그룹 단어 체커 / python3 (feat. 다시 도전) (0) | 2021.11.09 |
| [1003번] 피보나치 함수 / python3 (def 없이. 또 다시 마주친 메모리초과) (0) | 2021.11.09 |
| [10757번] 큰 수 A+B /python3 (이제는 easy해져 부려따) (0) | 2021.11.09 |