파이썬에서 bfs는 어떻게 구현할까요? 이 말은 파이썬에서 어떻게 queue를 쓸까요? 와 같은 말입니다. collections에 deque가 있는데요. 그것을 이용하시면 됩니다. 예전에 list.pop(0)을 언급하면서 이야기를 잠깐 했던 기억이 나네요. [관련글] python에서 list.pop(0)을 쓰면 안 되나요? 먼저, append 부터 소개해 드리겠습니다. 이것은 오른쪽에, 원소를 추가합니다. 이 상황을 그림으로 그려 보겠습니다. 덱에 1만 있다고 해 봅시다. append(2)를 호출했다고 하면, 아래와 같이 될 겁니다. 1 오른쪽에 2가 추가되었습니다. 즉, 현재 deque에서 가장 오른쪽에 있는 것은 군청색으로 표시된 2인 것입니다. 다음에, 또 append 3을 하면 아래와 같이 될 겁..
전체 글 검색 결과
java 코딩 테스트를 준비하시다 보면, 간혹 가다가 메모리 초과를 보는 일이 있습니다. 메모리 제한이 보정되지 않았다면요. 저는 이럴 때, 조금이나마 메모리를 덜 먹는 구조로 바꾸곤 하는데요. 예를 들자면 LinkedList를 ArrayDeque로 바꾼다던지 하는 식입니다. 오늘 설명할 내용은 그것은 아니고, visual VM으로 메모리 사용량을 어떻게 확인하는지 간단하게 알려드리려고 합니다. 당연하게도, 예시는 코테에 치중해서 다루도록 하겠습니다. 먼저, bfs를 구현할 때 많이 쓰는 Queue가 있습니다. 자바에는 Queue는 interface이고요. 그것을 구현한 것이 LinkedList, 즉 리스트 구조와, ArrayDeque, 즉 배열 구조가 있습니다. 사실, 전자보다 후자가 메모리를 조금 덜..
우분투 mount와 umount는 자주 쓰일 수 있는 명령어 중 하나입니다. 각각, 장치와 파일 시스템을 attach 하고, detach 하는 명령어입니다. 문제 상황을 통해서, 어떻게 쓰이는지 알아보도록 하겠습니다. 먼저 우분투의 유저 cho로 로그인하는 암호를 잊어버려서, 부팅 디스크로 부팅한 상황입니다. 이 때, passwd cho를 해 봤자 소용이 없을 겁니다. 다른 장치에 있기 때문입니다. 그러면, 해당 디바이스에 대한 정보는 어디서 얻어올 수 있을까요? 이 질문에 대한 답변 중 하나는 lsblk를 이용하는 것입니다. 설명을 보면, block 디바이스에 대한 것들을 얻어온다고 되어 있습니다. 보시면, sda가 있고, sda1, sda2, sda5가 있음을 알 수 있는데요. 아마도, 파티션일 겁니..
파이썬에는 ==와 is가 있습니다. 이 둘의 차이를 알아봅시다. 먼저 is 연산자는 identity를 비교합니다. 설명을 보면 알 수 있습니다. 같은 오브젝트를 가리키면 x is y가 참값을 가집니다. 그렇지 않으면, false가 됩니다. 반면에 ==는 동등성을 비교하는 것인데요. 이것만 보면 헷갈리실 수 있으니, 예제를 보겠습니다. dog 객체가 2개 있습니다. a와 b는 'cho'라는 정보를 담고 있는 강아지 객체입니다. 보시면 __eq__하고 __hash__가 재정의 되어 있음을 알 수 있습니다. __eq__는 단지, st만을 가지고 비교하게 됩니다. a와 b의 필드 st의 값은 'cho'로 같았습니다. 그리고, 문자열은 내용이 같으면 참입니다. 어찌 되었던 Dog('cho')와 Dog('cho')..
oh my zsh를 셋팅하는 글들을 보면, 이상한 명령어들을 많이 쓴다는 것을 알 수 있습니다. 특히 $ 표시가 붙은 것들 말입니다. 이것들이 대체 무엇일까요? 간단하게 알아보겠습니다. 먼저, echo $SHELL 같은 것들 먼저 봅시다. 이것은 변수의 값을 출력해 줍니다. 예를 들어, $SHELL은 /user/bin/zsh이고, $JAVA_HOME은 /usr/bin/jvm/java-8-openjdk-amd64입니다. 어디에선가, SHELL 변수는 /usr/bin/zsh로 정의되었을 뿐입니다. $JAVA_HOME은 /usr/bin/jvm/java-8-openjdk-amd64로 정의되었을 거고요. 그래서, cd $JAVA_HOME 명령을 입력하면, java의 홈 디렉토리로 이동합니다. 그랬음을 알 수 있습..
최근댓글