문제 링크: https://www.acmicpc.net/problem/10989
❌ 1~3차시도 실패
시간초과 메모리초과 범벅 여정을 지나쳐 정답으로 가는 길....🚗
어렵다 어려워ㅠㅠㅠ
먼저 나처럼 실패의 길을 보시렵니까
1
2
3
4
5
6
7
8
|
n=int(input())
num=[]
for _ in range(n):
inp=int(input())
num.append(inp)
num.sort()
for i in num:
print(i)
|
cs |
보이시나요?
num리스트를 만들어 2번째줄부터의 N개의 줄을 리스트에 하나씩 넣고,나중에 하나씩 꺼내는 작업을 했습니다.
VS CODE에서 디버깅 잘 되었는데, 이런 결과가 난걸까요??
메모리 제한이 8MB네요... 시간제한도 5초네요. 엄청 조그만하고 귀엽지여...?
그래서 정답률이 23%밖에 안되었나봅니다... 켘
❓ 해결 방법은 ??
여기서 다른 고수님들 찬스를 써봅니다!!🎉
for 반복문 안에 input( )으로 여러 줄을 받는 경우, sort( )로 정렬을 사용할 경우에는
시간초과 메모리초과가 생길수도 있다고..
그래서 sys 모듈에서의 sys.stdin.readline( ) 을 사용한다고 합니당.
그럼 sys.stdin과의 차이점은 뭐지???라는 생각이.....갑자기 샛길로 빠짐(하.. 이르즈마....🥴)
무작정 VS code에 쳐봤다....
내용은 길어질 것 같으니 따로 글을 올리겠다.. ㅠㅠ 휴
https://coding-nurse.tistory.com/8?category=975208
요점은>>
sys.stdin은 여러 번을 입력할 때 // sys.stdin.readline은 한 번을 입력할 때
그리고 s가 생길 수도 있고요.
그리고 한줄씩 출력이 되어야하니, sys.stdin.readline() 을 사용해야하고요.
그럼 작성해볼까요?
💯 풀이 과정
음.... 먼저 input( )들을 sys.stdin.readline으로 바꿔서 입력한다고 생각하고
sorted( )방법을 쓸 수 없으니, 다른 방법으로는 먼저 리스트를 만들어서 각 리스트 자리에 나오는 만큼 카운트를 하고 나중에 출력 시 각 자리에 카운트 된 수만큼 반복 출력하면 됩니당
이러면 따로 정렬할 필요없이 앞에서부터 나오니까 답이 잘 나오겠죵?🤗
1
2
3
4
5
6
7
8
9
10
11
|
n=int(sys.stdin.readline()) #첫째 줄 n개가 주어짐
num=[0]*10001 #입력 수들이 10,000이하/ 0부터 시작하는 리스트는 10,001개를 만들어야 함
for _ in range(n):
test=int(sys.stdin.readline()) #입력 수들을 정수로 받고
num[test]+=1 #입력된 정수의 리스트 자리에는 하나씩 카운트하여 나온 횟수 체크
#이제 리스트에서 하나씩 꺼내서 출력
for i in range(10001): #리스트가 (0~10,000) 10,001번 반복해서 빼오면
if num[i] !=0: #0인 경우엔 없으니 출력할 필요없고, 0이 아닌 경우만 출력
for _ in range(num[i]): #카운트 횟수인 리스트 각 자리만큼 반복
|
cs |
오늘도 하나 배웠다🤣
'😁 빅데이터 문제 풀기 & Study > - BAEKJOON 문제' 카테고리의 다른 글
[2798번] 블랙잭 / python3 (feat. for문이 여러개!!) (0) | 2021.11.07 |
---|---|
[1260번] DFS와 BFS / python3 (feat.이코테 유튜브 강의) (0) | 2021.11.05 |
[2941번] 크로아티아 알파벳 / python3 (in, replace) (0) | 2021.11.05 |
[2751번] 수 정렬하기 2 / python3 (0) | 2021.11.04 |
BAEKJOON 백준 문제 업로드 순서 (0) | 2021.11.03 |