안녕하세요. 이번 시간에는 for in문에 대해서 알아보겠습니다. 보통 ps를 하거나, 코테를 준비한다고 하면, 저는 3개만 잘 하라고 합니다. balanced tree, hash, array. 이 3개에서 거의 벗어나지 않기 때문이에요. 이 3개를 가지고 for in 문을 갖고 놀아보겠습니다. 기본적으로 파이선은 bintree 계열이 없는 듯 하니, bintree 패키지를 깔아줍시다. 가상 환경에 깔아두면 유용하게 써먹을 수 있습니다. 이것은 rb 트리 뿐만이 아니라, AVL도 포함하고 있습니다. 프로그램은 간단합니다. 30번 loop를 돌면서, tree에 (x,1) pair를 추가합니다. 그리고 8번째 줄에서 뭔가를 하는 듯 보입니다. 출력 결과를 봅시다. 트리 안에 있는 (K, V)쌍을 출력했음을 ..
코딩 검색 결과
파이선으로 백준을 푸시다 보면, 이런 거 한 번 쯤 복사 붙여넣기 하신 적이 있을 겁니다. 이 포스트에서는 노란 부분 말고, 파이썬 map 함수만 알아보도록 하겠습니다. 공식 문서에 보면, 이 함수는 다음과 같이 설명이 되어 있습니다. 먼저, iterable부터 봅시다. 이터레이터. 어디에서 동작했나요? c++의 STL에서는 vector, map 등에서 동작했습니다. 즉, 순회 가능한 무언가라는 것입니다. 예를 들자면, python의 list는 동적 배열입니다. 이것은 순회 가능한 자료구조 중 하나입니다. 여기서 next를 부르면, 이터는 현재 가리키고 있는 2 다음 원소인 3을 가르킵니다. 그러면, 2번째 인자가 이해가 되실 겁니다. input().split()은 입력받은 문자열에 대해서, white ..
약 5개월 전에, define 전처리문에 대해서 썼습니다. 이번 시간에는 조건부 컴파일을 할 때 많이 써먹는, #if와 #ifdef에 대한 글을 써보도록 하겠습니다. 당연하게도, 백준 사이트에서도 많이 볼 수 있는 코드이기도 합니다. 먼저 위 코드를 보겠습니다. 이상한 va_list라던지 va_start, vprintf, va_end가 나오지만, 여기에서는 중요하지 않습니다. 단지, 가변 인자를 처리하기 위해서 저런 것들을 썼다 정도만 보시면 되고요. 여기서 중요한 것은 13번째 줄의 #ifdef입니다. 이것은 무엇을 하는 것일까요? 위에 보니까 DEBUG라는 것이 정의가 되어 있지 않아요. 아무 결과도 나타나지 않았습니다. 반면에, 이 코드는 위에서 DEBUG라는 필드가 정의되어 있었습니다. 이 경우에..
예전에 ifnull 함수를 배운 적이 있었습니다. null이면 A로 처리하더라. 이런 플로우였습니다. 반대로, nullif 함수가 있습니다. 이것은 반대로 B이면, null로 처리하게끔 할 때 씁니다. 어떤 플로우인지 잠깐 언급을 드리고, 예제를 간단하게 보겠습니다. 먼저, expr1 = expr2가 참이라면, true이니 이 때에는 null을 돌려줍니다. 그렇지 않으면, expr1을 돌려줍니다. 생각보다 복잡하지 않아요. 그러면, 학점 score가 'F'라면 null 처리를 하겠다. 고 하면 어떻게 하면 좋을까요? nullif의 플로우는 위와 같아요. 우리가 리턴해야 하는 값은 score입니다. 그러니, expr1에는 score가 들어가야 합니다. 다음에, expr2에는 'F'가 들어가야 겠네요. 즉,..
백준 문제를 파이선으로 풀 때, 많이 써먹는 함수 중에 하나는 split입니다. 이 함수에 대해 간단하게 알아보겠습니다. 먼저, input은 입력 받은 것을 str로 리턴해 줍니다. 우리가 python으로 ps를 할 때, input().split()를 많이 써먹습니다. 예를 들자면 아래와 같이 입력이 들어왔을 때입니다. 이것은 공백을 기준으로 나누어진 예입니다. 100, 100을 받으려면, 1번째 줄을 통째로 입력받고 그것을 공백을 기준으로 나눠야 합니다. 이 때 써먹을 수 있는 메서드는 built in 함수인 split 입니다. 사용 용례를 보겠습니다. 결과 먼저 보면, ab-cd-ef로 입력을 받아서, output으로 내놓은 것은 ['ab', 'cd', 'ef'] 입니다. 즉, 무언가를 기준으로 나누..
최근댓글