안녕하세요. 조가희입니다. 이번 시간에는 제가 가희 코테를 열면서 풀이를 검증했을 때 사용해서 편리했던 defaultdict에 대해 알아보도록 하겠습니다. 먼저, 아래 프로그램을 봅시다. 처음에 1번 키가 있고, value 값이 빈 리스트입니다. 그리고 1번 key의 value 값에 append(2)를 합니다. 그러면 1번 키는 2만 들어가 있는 리스트에 대응될 겁니다. 1번째 줄에서 dic은 위와 같이 되어 있습니다. 2번째 줄이 수행되고 나서, key 1에 대응되는 것은 2가 들어 있는 list일 테니, {1: [2]}가 출력될 겁니다. 문제는 그 다음에 키 2에 있는 값에 접근한다는 것입니다. 그런데, 이것은 dic에 없는 키입니다. 따라서, KeyError가 뜹니다. 실행 결과는 위와 같습니다. ..
코딩/파이선 검색 결과
이번 시간에는 파이썬의 setrecursionlimit에 대해 알아봅시다. 설명을 보시면, 딱히 어렵지는 않습니다. 인터프리터의 maximum stack depth를 늘려줍니다. 스택 트레이스 할 때 그 뎁스를 의미합니다. 이 뎁스는 재귀 호출과 관련이 깊습니다. 예를 들어, 20000번째 피보나치 수를 M으로 나눈 결과를 재귀함수로 구한다고 생각해 봅시다. 메모이 제이션까지 적용한다면 위와 같이 구할 수 있습니다. dp[x]가 -1이 아닐 때에는 그냥 dp[x]를 리턴해 주고, 아니라면 x-1번째 피보나치와 x-2번째 피보나치를 더한 다음에 M으로 나눈 나머지를 리턴합니다. 그런데, RecursionError가 뜹니다. 이는, depth가 너무 많이 깊어져서 smash가 나지 않게 하기 위해서입니다. ..
안녕하세요. 이번 시간에는 파이썬 tuple 활용법을 알아봅시다. 예제 프로그램을 봅시다. 제가 많이 쓰는 용법은 크게 3가지입니다. 튜플의 비교, 순회, 인덱스 접근. 이렇게 3개입니다. 이들은 사실, list와 비교했을 때 큰 차이가 없습니다. 3번째 줄을 보면, int를 5개 모아놓은 튜플 a와 b를 비교합니다. int는 비교 연산이 구현되어 있습니다. 그러므로, 아래와 같이 비교합니다. 두 개의 tuple이 있습니다. 위에 있는 것이 tuple a고 밑에 있는 것이 tuple b라고 해 봅시다. 첫 번째 원소를 비교합니다. 둘이 같습니다. 같으니까 2번째 원소끼리 비교합니다. 두 번째 원소도 비교해 봅니다. 역시 둘 다 같네요. 세 번째로 넘어갑니다. 그런데, 세 번째와 네 번째도 같습니다. 그러..
python의 Collections에는 자주 쓰일 법한 유용한 자료 구조들이 있습니다. 파이썬의 Queue 대신에 쓸 수 있는 deque도 있습니다. 이것은 다음에 언급하도록 하고요. 이 중에서 이번 시간에는 Counter를 어떻게 쓰는지 간단하게 알아보도록 하겠습니다. 먼저 예제 1번을 보겠습니다. 3번째 줄에서, cs[1] += 2가 있습니다. 이는, 키 1이 나오는 빈도를 2만큼 증가시킨다는 의미입니다. 4번째 줄에 cs[1]이 있는데요. 이는 키 1의 빈도를 가져옵니다. 2가 되겠네요. 다음에 5번째 줄에서는 cs.pop(1)이 있는데요. 이는 키 1을 제거한다는 의미입니다. 이전에 key 값이 1이고, v가 2인 정보가 있었어요. 키 1을 pop 메서드로 제거하면, 이 정보가 사라집니다. 그러면..
이번 시간에는 파이썬에서 구분자가 여러개일 때 split를 어떻게 쓰는지 알아봅시다. 문자열이 주어질 때, ,이나 $이나 .이 오면 이것을 구분자로 취해야 합니다. 예를 들어서, 예시 문자열은 123,..,4$567alpha일 때, split를 한 결과는 123, 4, 567alpha 순서대로 나와야 합니다. 단순하게, split만 쓰기 위해서는 구분자들을 하나의 구분자로 통일시키기만 하면 됩니다. 이 패턴은 실무에서 문자열 처리 할 때 자주 쓰이는지는 모르겠습니다. 그러나, 코딩 테스트에서는 심심찮게 쓰이는 스킬이므로 알아두시면 도움이 매우 많이 됩니다. 플로우를 볼까요? .과 ,과 $를 기준으로 분리하라고 했는데요. 이런 문제를 multiple delimeter라고 해요. 구분자다. 라는 정보가 사라..
최근댓글