본문 바로가기

전체 글21

로또 추첨기 그냥 심심해서 한 번 만들어 보았는데, 시험삼아 천만번을 시행해 보았지만 1등이 나오지 않았다. ㅇ.....로또에는 손을 대지 않는 것이 좋겠다. # 로또 실행 횟수를 입력하면, 해당 실행 횟수만큼의 결과를 출력합니다 # 실행 중 10000회마다 실행 횟수를 표시하며, 2등 이상 당첨되었을 경우 결과를 표시합니다. import random class Lottery: # 맞춘 개수, 맞춘 번호들, 보너스번호 당첨숫자(당첨 아닐시 0), 등수 def __init__(self): self.potted_nums = [] # 자동으로 작성된 번호들 self.answer_nums = [] # 정답 번호들. 마지막 숫자가 보너스 번호 self.num_of_correct = 0 # 보너스번호는 제외 self.corre.. 2021. 2. 20.
빗물 트래핑 Q. 높이를 입력받아, 비가 온 후 얼마나 많은 물이 쌓일 수 있는지 계산하라. ex) [3, 0, 1] -> 1 , [1, 4, 1, 5] -> 3 1. 투 포인터 활용 두 개의 포인터를 리스트의 맨 왼쪽, 오른쪽에서 각각 중앙을 향해 출발시킨다. 양쪽의 왼쪽에서 가장 높은 값, 오른쪽에서 가장 높은 값 중에서 더 작은 쪽을 큰 쪽을 향해 이동시킨다 (left_max가 3이고 right_max가 5인 경우 left가 우측으로 1칸 이동) 이때 왼쪽을 예로 들자면, 왼쪽부터 우측으로 이동하며 높이가 낮아지는 경우 낮아진 만큼을 결과값에 합산하고, 높이가 높아지는 경우에는 해당 인덱스를 left_max로 갱신한다. (오른쪽도 방향만 반대일 뿐 동일하다) 위의 과정을 반복하면, 결국 left와 right가 .. 2021. 2. 11.
가장 긴, 회문인 부분 문자열 찾기 Q. 가장 긴 팰린드롬(회문) 부분 문자열을 출력하여라. ex) ppabcbaqq -> abcba, ppabba -> abba 구현 전략 : 1. 간격이 2, 3인 두 개의 투 포인터를 각각 이동시키며, 길이가 2이거나 3인 부분 문자열을 탐색한다. 2. 부분 문자열이 탐색되는 경우, 윈도우를 좌우로 한 칸씩 확장시키며 회문인지 탐색한다. 3. 탐색된 모든 회문들 중 길이가 가장 긴 것이 결과값이 된다. 코드를 구현하면서 인덱스 설정 때문에 애를 많이 먹었던 문제이다. 두 개의 포인터(C언어의 그 포인터는 아니지만) 를 일정한 간격(1칸 또는 2칸 간격) 으로 이동시키며 길이가 2이거나 3인 회문을 찾고, 탐색된 경우 윈도우의 폭을 확장해 나가며 가장 긴 회문을 탐색하는 방식이다. 책을 읽으며 코드의 흐.. 2021. 2. 9.
함수 인자 전달 C언어나 C++을 공부하다 보면, 함수에 인자를 전달하는 방식으로 Call by value, 또는 Call by pointer이나 reference 등의 방식을 본 적이 있을 것이다. 파이썬에서는 이들과도 조금 다른 방식으로 인자를 전달하는데, 일반적으로 Call by object reference 라고 한다 (Call by Sharing이라고도 한다). 즉 객체의 형태로 인자를 전달하되, 레퍼런스, 즉 참조의 방식으로 전달한다. 또 변수가 수정 가능한지 아닌지에 따라 결과에 차이가 있다. ... 무슨 이야기인지 나도 처음에는 이해가 잘 가지 않았는데, 아래의 예시들을 통해 이해해 보자. int와 list, 두 가지의 자료형을 통해 설명해 보고자 한다. 목차 1. int (immutable 대표주자) 2.. 2021. 2. 7.
객체 in Python 파이썬의 모든 자료형은 객체이다. C언어를 예로 들어보자. C언어에서 int num = 10; 과 같이 정수 변수를 하나 생성한다면, 4byte (아주 옛날 프로세서가 아니라면) 만큼의 메모리에 10을 저장하는 방식으로 동작한다. 따라서 C언어에서 정수의 크기는 4byte이다. 또한 정수들로 이루어진 배열을 생성하게 되면, '4 x 배열의 길이' 만큼의 메모리를 차지한다. 그렇다면 파이썬에서 정수의 크기는 4byte일까? 직접 확인해 보자. >>> num = 10 >>> num.__sizeof__() 28 무려 28바이트이다. 이는 파이썬의 특성 때문인데, 파이썬은 모든 자료형이 객체이다. 아래는 위의 num 변수가 가지고 있는 '내장 변수' 들을 출력하는 코드이다. >>> import pprint # .. 2021. 2. 7.