※ 2020-11-16 백준 사이트에서 질문 글 답변 추가
■ 문제 링크
https://www.acmicpc.net/problem/2577
2577번: 숫자의 개수
첫째 줄에 A, 둘째 줄에 B, 셋째 줄에 C가 주어진다. A, B, C는 모두 100보다 같거나 크고, 1,000보다 작은 자연수이다.
www.acmicpc.net
■ 소스 코드
A = int(input())
B = int(input())
C = int(input())
dict = {
'0':0,
'1':0,
'2':0,
'3':0,
'4':0,
'5':0,
'6':0,
'7':0,
'8':0,
'9':0
}
for i in str(A*B*C):
dict[i]+=1
for i in dict:
print(dict.get(i))
■ 풀이
딕셔너리에 0부터 9까지는 문자로 저장하고,
A*B*C 한 값을 문자열로 변환해서 딕셔너리에 있는 키를 찾으면 1씩 증가시키고 다음 반복문에서 키에 저장된 값을 출력하도록 했다.
■ 후기
파이썬이 자바로 했었을 때보다 역시 시간은 짧은데 메모리를 많이 차지한다..
레퍼런스를 찾아본 결과,
파이썬은 자바나 C와 다른 언어들과 달리 변수를 선언할 때 메모리 공간을 먼저 할당하지 않는다고 한다.
값을 저장하면 그 값을 참조하는 형태로 주소값이 저장된다.
값이 바뀌면 다른 값을 참조하도록 새로운 주소값이 저장되는 형식!
궁금해서 질문을 올렸다.. 댓글 달리면 추가할 예정!!
우선 먼저 달린 답변 중 다른 언어끼리 메모리 차이를 비교하는 것은 애초에 의미가 없다는 답변이었고,
다음 답변에선 그래도 굳이 비교하자면 파이썬은 인터프리터 언어이기 때문에 코드를 인터프리팅하기 위해 필요한 내부 모듈들을 메모리에 로드해야 하므로 기본적으로 사용되는 메모리가 상당히 크다고 한다.
사실 자바도 jvm이라는 가상머신 위에서 실행되기 때문에 플랫폼 종속적 컴파일 언어에 비해 메모리를 많이 쓰는 편이라고 한다.
같은 언어라 하더라도 컴파일러나 버전에 따라서 메모리 사용이 달라질 수 있다고 한다.
잘못된 점이나 보충할 부분이 있으면 코멘트 남겨주세요
작은 조언이 저에겐 성장의 원동력이 됩니다 :-)
'알고리즘' 카테고리의 다른 글
[데알] 프로그래머스 알고리즘 Lesson.42576 완주하지 못한 선수 (Java) (0) | 2020.11.17 |
---|---|
[데알] 프로그래머스 알고리즘 Lesson.68644 두 개 뽑아서 더하기 (Java) (0) | 2020.11.16 |
[데알] 백준 알고리즘 No. 11654 아스키코드(Python) (0) | 2020.11.14 |
[데알] 백준 알고리즘 No. 2750 수 정렬하기(Java) (0) | 2020.11.13 |
[데알] 백준 알고리즘 No. 1978 소수 찾기(Java) (1) | 2020.11.12 |
댓글