python에는 hash 함수가 있습니다. 무엇을 하는 함수일까요? 간단하게 hash(1)과 hash('str')을 입력해 보겠습니다. 그랬더니 1과 -34797.. 이 나옵니다. 객체의 hash값을 돌려주기 위해서 쓴다. 정도로 추정할 수 있습니다. 이제, Obj 하나를 정의해 보겠습니다. 생성자에 인자 x를 받습니다. 그러면 Obj의 필드 x에 x의 값을 넣습니다. 이제 Obj(1)의 해시값과, 다른 객체인 Obj(1)의 해시값을 비교해 보겠습니다. 다릅니다. 왜? __hash__가 재정의 되어 있지 않기 때문입니다. 파이썬에서는 dict, counter 등이 hash를 기반으로 동작하는데요. 키 값으로 custom한 객체를 넘겨줄 때 __hash__를 재정의 해야 할 겁니다. 이 __hash__ 안..
python 검색 결과
파이썬에는 문자열을 입력받는 방법이 몇 가지 있습니다. 백준에서는 sys.stdin에 있는 readline을 많이 쓰는데요. 간단하게 알아보도록 하겠습니다. 먼저 python의 sys.stdin에 있는 readline은 한 줄씩 입력을 받는데요. 아무 것도 없는 경우에 빈 배열을 돌려줍니다. 만약에 한 줄에 아무 것도 없고 개행만 있는 경우에는, 개행이 있기 때문에 이야기가 달라집니다. 예제를 보겠습니다. 우리는 빈 배열이 리턴되면, 루프에서 빠져나가야 한다는 것을 알고 있습니다. while True: 로 계속 입력을 받습니다. 그런데 if not s: 이면 break를 겁니다. 배열의 경우 빈 배열일 때 해당 조건이 참이 되므로, 이 프로그램은 맞게 실행되는 것처럼 보입니다. 대부분의 백준 문제의 경우..
datetime의 날짜가 몇 번째 주에 속하는지 출력하려고 합니다. 이 때 잘못 적용하면 의도치 않는 결과가 나타날 수 있습니다. 특히, 1월 새해 근처에 있는 코너 케이스로 테스트를 해 보셔야 어떤 주에 속하는지 정확하게 알 수 있습니다. 먼저 2020년 12월 25일부터 14일 동안 년도와 몇 번째 주차인지 뽑는 프로그램을 만들어 보겠습니다. strftime으로 datetime을 문자열로 변환하는데요. 변환 문자열이 '%Y-%W'임을 알 수 있습니다. 년도와 주차가 뽑히게 되는데요. iso 8601 형식이 아닙니다. 어떻게 뽑히는지 보겠습니다. 2020년 12월 28일이 2020년 52번째 주차로 뽑힙니다. 그리고 2021년 1월 1일이 2021년 0번째 주차, 1월 4일이 1번째 주차로 뽑히게 되는..
python math의 lcm은 여러 정수의 최소 공배수를 구하기 위한 함수입니다. 1번째 예제입니다. 2와 3의 최소공배수를 구하라고 했습니다. 결과는 6이 나올 겁니다. 왜냐하면 2와 3의 공배수 중 최소인 것은 6이기 때문입니다. 여기까지는 별로 어렵지 않습니다. 당연한 것이니까요. 이제 0과 5의 최소 공배수를 구하려고 합니다. 어떻게 나올까요? 문서를 찾아보면, 하나라도 0이 있는 경우에 무조건 0이 나온다고 되어 있습니다. 따라서, 이 경우에는 0이 나오게 됩니다. 정말 그리 나오네요. 만약에 음수가 있으면 어떻게 될까요? -4와 6의 최소공배수를 구하려고 합니다. 이 경우, -4의 multiple과 6의 multiple이면서 가장 값이 작은 positive integer를 돌려줍니다. mul..
안녕하세요. enum은 보통 상수값을 선언하고, 제약하기 위해서 많이 쓰게 됩니다. 이번 시간에는 그 중에, valie 값으로 대응되는 enum member를 얻어오는 방법과 name to enum을 하는 방법을 알아보겠습니다. 상당히 많이 쓰일 듯 하니 알아두면 좋을 듯 합니다. 그 전에 몇 가지 용어를 알아볼 거에요. enum은 name과 value가 있어요. 5번째 줄을 보겠습니다. RED = "red"라고 되어 있어요. 여기서 우리는 RED를 name이라고 합니다. 그리고, 이 이름에 대응되는 값 "red"를 값이라 불러요. 8 ~ 9번째 줄은 Color.Red의 이름과 Color.Red의 value를 출력합니다. 각각 RED와 red가 출력되게 됩니다. 이 둘을 묶어놓은 것을 member라고 합..
최근댓글