python에서 dictionary가 어떻게 구현되었을까요? 아니 그 전에 최악의 경우에 뭔가를 찾는 연산은 O(n)일까요? insert 하는 연산도? 사실, 저는 자바에서 본 것 처럼 그냥 chaining 으로 관리하지 않을까 싶었는데 그건 아니였습니다. 니다. 제 무지함이 또. 그 전에, 정말 최악의 경우에 insert나 find 연산 등이 비효율적으로 동작할까? 에 대한 의문부터 해결해 봅시다. 최악의 경우를 인위적으로 만드는 방법은 그리 어렵지 않습니다. 어디까지나 인위적으로 조작할 뿐, 실제로 제가 출제한 문제에서 최악 케이스를 만드는 건 쉽지 않습니다. 왜냐하면, python에서 int object가 모든 hashcode 값이 0일 리는 없기 때문입니다. 이에 대한 건 나중에 언급하도록 하겠습..
전체 글 검색 결과
안녕하세요. 5일 만에 돌아온 코딩개 입니다. 제가 낸 코딩 테스트 문제 중에 heap 자료구조를 이용하는 문제가 있었습니다. 1회에 유독 많이 냈던 걸로 기억하는데요. 파이썬에서는 heapq 모듈과 tuple을 이용하면 날먹 수준으로 쉽게 구현하실 수 있어요. 예제 코드를 볼게요. 먼저 2번째 줄은 prioroity queue 역할을 할 배열을 선언한 거에요. 다음에 heappush를 하는데요. pq에 tuple (1, 2)를 넣습니다. 4번째 줄에는 (-1, 3)을 넣어요. 다음에, 5번째 줄에서, pq에서 맨 위에 있는 원소를 pop 하면서 맨 위에 있었던 원소를 가져오게 됩니다. 그리고 다시 (-1, 6)을 heap에 넣고, 7번째 줄에서 pq[0]에 무엇이 들어있는지만 봅니다. heappop하고..
가희배 코딩테스트 1회에서 나온 7번 문제는 가희와 프로세스 문제의 결과값이 주어졌을 때, 거꾸로 인풋 값을 만들어 보라는 문제였습니다. 항상 가능한 경우만 주었기 때문에 쉬울 거라고 생각했습니다. 그런데, 실제로 대회 때 문제를 푸신 분들은 그리 많지 않았고 골드 1로 평가되는 기염을 토하게 되었습니다. 사실 불가능한 경우까지 출력하라고 했는데, 진짜 그렇게 출제 했다면 100% 플레급으로 뛰었을 거라 생각합니다. 그러면 무엇이 이렇게 어렵게 만들었을까요? 문제에서 설명하는 알고리즘을 단순화 하는 것이 제일 어렵지 않았나 싶습니다. 게다가 실행 결과를 가지고 가능한 입력값을 만들라고 하니 당황할 수 밖에 없었을 겁니다. 사실 제가 맞닥트렸어도 매우 당황했을 겁니다. 일단, 가희와 프로세스의 나온 입력 ..
RequestBody에 대해서 Validation이 실패했을 때 custom한 error를 떨어트리는 것을 하였습니다. 그런데, 쿼리 파라미터라던지, path variable에 대해서 Validation을 처리하지는 못합니다. 이것을 처리하기 위해서는 ConstrainViolationException을 컨트롤러 advice에서 처리해 주어야 합니다. ContraintViolationException이 떨어졌을 때, custom message를 어떻게 떨굴지 보도록 하겠습니다. 먼저, e에 contraintViolations가 있습니다. HashSet이 있는데요. 이 안에 ConstraintViolationImple가 들어가 있음을 볼 수 있어요. HashSet 내부에 있는 키들을 모두 순회해서 값들을 가..
안녕하세요. 코딩개입니다. 이번 시간에는 java에서 string에 들어있는 문자들을 어떻게 hex 값으로 보는지 알아보도록 하겠습니다. 저번 시간에 replace랑 replaceAll이랑 비교한 부분 기억하실 거에요. 출력은 같아 보이는데, 사실 다른 문자열이라고 했습니다. 왜? 출력이 되지 않는 문자가 포함되어 있기 때문이에요. 정말 그것이 포함되어 있는지 디버그를 해 보기 위해서 string에 저장 되어 있는 문자들을 차례대로 hex로 출력해 봅시다. Format 문자열에 대한 설명을 봅시다. Conversions 단락을 보면, 몇 가지 카데고리로 나뉜다고 되어 있습니다. General은 어떠한 type도 받아들인다는 것을 의미합니다. 3번의 Numeric은 몇 개의 type만 잡는데요. Integ..
최근댓글