본문 바로가기
반응형

블로그 글161

[ 프로그래머스 ] 자물쇠와 열쇠 파이썬python 풀이 // 문제 요약 돌려서 끼워 넣을 수 있는 M x M 열쇠가 있을때 돌릴 수 없는 N x N 의 자물쇠가 열리는지 안열리는지 확인해라. 단, 자물쇠의 열림 조건은 모든 값이 1 이되는가 이다. // 풀이 전형적인 브루투스 포스 (전체 탐색) 문제. 특히 N과 M 이 3 이상이면서 20을 넘지 않는 수로 주어지므로 충분히 for문을 여러번 사용해도 되는 문제라고 할 수 있다. 고고학자 튜브가 나와서 유치원생 문제처럼 그림을 그려놓았지만 사실은 복잡한 여러겹의 루프를 적절한 단위의 테스크로 나누고 각각 모듈화하여 조합할 수 있는가를 묻는 문제이고 최근 딥러닝 프레임워크들이 지향하는 바를 이해하고 구현할 수 있는가 물어보는 느낌도 받았다. 특히 Convolution생각이 많이 났다. 열쇠를 돌리는 과정에서는 .. 2021. 6. 2.
[ Python 삽질 ] List의 원소가 한번에 다 바뀔때 deep copy? shallow copy? 사실 이번 글은 정말 부끄러운 내용이다... 초보적인 실수이면서도 정말 잘 고쳐지지 않는 내용이므로 확실하게 짚고 넘어가고자 한다. // 문제 상황 코딩 테스트를 보는데 이미지나 표가 나왔다. 리스트의 리스트를 만들어서 행렬처럼 쓴다고 가정하자. 먼저 zeros를 만들면 이렇게 해서 이렇게 나올 것이고 그다음 이렇게 가운데에 행렬을 복사해 넣어서 zero padding 효과를 주고 싶다고 하면 잘 될까? 결과는 이렇게 나온다. 특히나 numpy의 array를 많이 접해본 경험이 있거나 list 안에 단순한 숫자가 아닌 여러 다른 특성의 객체를 담게 되는 경우 이런 실수는 정말 무의식 중에 비일비재하게 일어난다. // 해결 방안 사실 현장에서는 꼭, 굳이 list of list를 만들어서 사용해야 되는 상.. 2021. 6. 2.
[ Jupyter 삽질 ] Jupyter의 터미널에서 자동완성이 안될때 // 문제상황 ^[[A, ^[[B, ^[[C, ^[[D 이런게 방향키를 누르면 나오고 탭을 하면 큼직한 공백이 생기는 문제가 발생했다. // 해결법 아주 간단하다. bash 라고 치고 앤터를 치면 끝난다. 진짜다. // 원리 우리가 터미널이라고 하는 입력창은 tty의 일종으로 입력이 들어가면 그에대한 출력값을 보여주는 장치다. 그리고 입력과 출력에 대한 프로토콜이라고 해야하나 아무튼 해석을 위한 약속이 정해져 있는데 이 약속을 shell이라고 하고 shell 이 이해할 수 있는 스크립트를 shell script 라고 한다. 그러니까 우리는 shell이 해석할 수 있는 방식의 입력을 전송해야된다. 그런데 이 shell에는 여러가지 버전이 있고 그중에 하나가 바로 bash 이다. 그런데 일부 리눅스 혹은 도.. 2021. 6. 1.
[ 프로그래머스 ] 야근 지수 파이썬python 풀이 // 문제 요약 야근을 하면 남은 일의 업무량을 제곱한 만큼 피로도가 쌓인다고 할때 남은 근무시간과 업무량이 리스트로 주어지면 최소의 야근 피로도는 얼마인가 // 풀이 효율성까지 따지는 이번 문제는 알고리즘으로는 힙 문제라고 할 수 있는데 단순히 힙 문제라고 하기엔 거의 모든 알고리즘 문제가 그러하듯 수학적 사고력 문제라고 할 수 있다. 우선 수학적 접근으로 이 문제를 보면 합이 일정한 수들의 제곱의 합이 최소가 되도록 하는 방법은 무엇인가? 라고 할 수 있다. 이런 간단한 문제들은 조금만 생각해 봐도 엄청 어렵다는 것을 알 수 있는데 제한 조건이 1개인 상황이어서 수가 3개 이상만 되어도 일반적인 제곱의 합을 단 하나의 매개변수에 대하여 알아내기가 불가능하기 때문이다. 그래도 감을 잡기 위해서 그림으로.. 2021. 6. 1.
[Jupyter 삽질] 자동완성, 탭tab 키가 안될때 해결방법 // 상황 주피터노트북에서는 탭을 누르면 객체의 하위에 선언된 값이나 메소드를 불러주는 자동완성을 지원한다. 또 아무것도 없는 상태나 문자열을 작정하는 중에 자동완성 기능을 사용하면 하위디랙토리의 내용을 보여주기도 한다. 이미 배포되어있는 도커를 사용하면 이런 기능을 쓸 수 없는 경우가 종종 있는데 혹은 잘 되던 완성기능을 특정 디렉토리에서는 사용할 수 없는 경우가 있는데 이럴때 해결할 수 있는 방법을 알아보자. // 원인 우선 이 현상의 원인으로 지목되는 1순위는 바로 검색 시간이다. 주피터도 인간이 아닌 이상 우리가 탭을 누르면 엄청난 속도로 하위 항목을 검색한 후 해당 문자열로 시작하는 항목을 추려서 보여주는 기능이 탑재된 것이다. 따라서 이 후보를 검색하고 모으는데 시간이 어마무시하게 걸린다면 이.. 2021. 5. 15.
[ 프로그래머스 ] 정렬 > 가장 큰 수 파이썬python 풀이 프로그래머스 문제는 풀기만 하고 정리를 안해서 아직 깃헙에도 못 올리고 있는데 이 문제는 쓰임이 많을것 같아 기억을 위해 정리를 해 두고 넘어가고자 한다. // 문제요약 0 또는 양의 정수가 주어졌을때, 정수들을 이어서 만들 수 있는 가장 큰 정수를 구해라. // 풀이 굉장히 쉬워보여서 금방 끝낼 줄 알았지만 완벽히 이해하는데 시간을 많이 들인 의외의 문제다. 코드를 먼저 보자. def solution(numbers): def sort_key(x: str) -> str: return (x*4)[:4] numbers = sorted([str(n) for n in numbers], reverse = True, key = sort_key) return str(int(''.join(numbers))) 내가 시도.. 2021. 5. 1.
반응형