질의응답 게시판
입력받은 문자열을 갯수로 압축하는 코드를 짜라는 퀴즈를 보고 나름대로 짜본결과인데요
예를 들어서
aaaaaabbbcdd 이렇게 입력받으면
a6b3c1d2 이렇게 문자와 문자의 갯수로 압축해서 표현되면 되는거고요
제가 쓴 코드와 다르게 이런 과정을 더 쉽게해주는 파이썬모듈이나 기능이 있는지 궁금해서 질문하게됬씁니다.
요즘 이런 파이썬코딩 퀴즈들을 풀다보니까 느낀건데
내 마음에 드는 규칙대로 데이터를 넣고뺄수있다는 점때문에 리스트를 굉장히 많이쓰게되네요
그런데 리스트를 생성하면 메모리를 많이 쓰게 된다라는 말을 종종 봐서
코드를 짤때 리스트없이 짤 방법도 생각해 보고는 하는데 딱히 떠오르지가 않더라고요
그런데 이 리스트는 메모리가 많이 든다는 이 말은 초보자한테 굉장히 어려운 말인거 같습니다
일단 메모리라는게 뭘 의미하는지 구체적으로 모르고
그렇다면 어떻게 하면 알수있게 되는지도 모르기 때문에 그런거같네요
이런 말을 들었을때 제 뇌가 출력해내는 말을 순차적으로 표현해보면
1. 리스트는 메모리가 많이든다?
2. 그러면 파이썬의 다른 데이터형태들은 어떻길래 메모리를 리스트보다 덜 쓴다는 걸까?
3. 역으로 그 말이 맞다고 전제하고 간단한 예로 생각을 해보자
4. 리스트 [0,1,2,3,4,5] 를 생성하는것과 range(6) 처럼 range객체를 생성하는건 무슨 차이가 있을까?
5. 리스트는 0,1,2,3,4,5를 실제로 생성해야하고 range는 생성할 준비만 하면되서 메모리를 덜쓴다는걸까?
6. 만약그렇다면 실제로 생성한다는게 도대체 무슨 의미인가?
7. 중학교 시절 컴퓨터교과서 수준으로 다져진 나의 기반지식은 메모리가 데이터를 저장하는 장치라고 말해준다.
8. 반도체는 전기가 통하거나 안통하게 할수있는 물질이고 컴퓨터를 반도체로 만드니까
이 특성을 이용해서 전기가 통하면 1 안통하면 0 이런식으로 무언가 일이 일어나도록 만들어져있다는 걸
얼핏 들었던 기억이 있다.
9. 그러면 리스트 [0,1,2,3,4,5]를 생성하시오는 100101010100010110111101101 뭐 이런 식이고
range로 0,1,2,3,4,5를 생성할 준비를 하시오는 11101010 뭐 이런 식이여서
1과 0 을 덜 사용할수 있어서 메모리를 덜 쓴다는 것인가?
10. 그러면 1과 0을 사용한다는 것이 도대체 무슨 뜻인가
전기가 통하고 안통하고 반복하는게 도대체 무슨의미길래 이런일이 일어나고 있는건가
11. 전기 통함,안통함,안통함,통함,안통함 이라는 현상이 세상에 일어나면 'a'라는 문자가 나타나도록
전기의 신 제우스가 철권콤보 만들듯이 미리 다 만들어 놨고
인간이 어쩌다보니 그 철권콤보를 발견하게 됬고
또 어떻게 어떻게 하다보니
모래로 반도체를 만들고 지금 내 화면에 'a'라는 문자가 나타나게 된건가?
12. 도대체 메모리가 무엇인가
13. 이걸 확실하게 알고있는 사람이 있긴할까
14. 확실하게 알면서 일반인에게 설명도 해줄수 있는 사람이 있긴할까
코드 물어보러 왓다가 생각을 그냥 쓰다보니까 글이 엄청 길어져버렸네요