시도 1 (실패)
이라는 문장은 성립 불가능
int(sys.stdin.readline().strip())으로 정수를 읽어온 후, 이를 다시 리스트로 변환하려고 시도했음
하지만 int 객체는 반복 가능하지 않다
따라서 list(int(...)) 구문이 TypeError: 'int' object is not iterable 오류를 발생시킴
시도 2 (실패)
답은 성공적으로 나왔지만
메모리 초과
for문 속에서 append를 사용하게 되면 메모리 재할당이 이루어져서 메모리 초과가 발생했다
메모리를 더 줄일 수 있는 방법을 찾아야 한다.
입력을 다시 살펴보면
첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다.
둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 10,000보다 작거나 같은 자연수라고 한다.
그러면 수는 최대 10,000개 들어올 수 있고 중복으로 10,000,000까지 가능하다는 것이기에
배열을 사용해 10001개까지 만들어서 그 안에 저장하는 방식을 사용해봤다.
시도 3 (성공)
10001 길이(0번째 배열 포함)의 배열을 선언해서 만약 숫자 1이 두개라면
배열[1] = 2로 지정하고 숫자 1을 두 번 print 하는 방식으로 풀었다.
---
그리고 찾아보니 pypy3이 python보다 빠르다고 들어 pypy3으로 제출하고 있었는데,
메모리는 python보다 pypy3이 더 많았다.
메모리 초과가 발생할 때는 python으로, 시간 초과가 발생했을 때는 python으로 제출하는 것도 답인 것 같다.
'백준 문제 풀이 > 수학' 카테고리의 다른 글
1541 잃어버린 괄호 (python) (0) | 2024.07.06 |
---|---|
1193 분수찾기 (python) (0) | 2024.07.02 |
15829 Hashing (python) (0) | 2024.06.27 |
11050 이항 계수 1 (python) (0) | 2024.06.26 |
2738 행렬 덧셈 (python) (0) | 2024.06.26 |