본문 바로가기

개발 관련 공부/코테용 파이썬12

배낭문제(백준 12865) 나는 프로그래머스에서 문제를 많이 풀었다. 프로그래머스는 딱히 알고리즘 분류가 되어있지 않은데...아무거나 골라잡아 풀다보니 구현,그래프 문제만 왕창 푼 것 같다. 아무튼 최근에는 웰노운이지만 코테에는 잘 안나와서(나오긴 하지만 구현,그래프보단 비중 적음) 소홀해진 알고리즘을 볼려고 한다. 평소에 알고리즘은 눈으로 슥 보고 음~그렇군 하고 넘어가는데..아무래도 이렇게 하니까 기억에서 증발되는 경우가 많은 것 같다. 그나마 블로그에 적으면 장기기억이 되는 듯하고, 오늘 볼 배낭 문제는 유명한 문젠데 척 보고 뭔소리야?가 절로 나왔던 문제이기 때문에...반성하며 블로그에 정리해본다. 직접 풀어보자. 백준 12865을 보며 공부해보자. 아주 클래식한 배낭 문제이다. 참고로 배낭에 넣을 물품을 쪼갤 수 있는 경.. 2022. 9. 19.
투 포인터에 대해 (백준 2003,1806) 이것이 코딩테스트다는 정말 도움이 되는 책이다. 하지만 난 이 책을 처음 볼 때 상당히 조급한 상태였고, 빨리 이론을 훑고나서 그래프, 구현 등 메이저한 실전 문제를 풀고 싶었다. 그래서 부록을 공부하지 않고 건너뛰어 버렸다.. 지금 다시 펼쳐보니 부록에 있는 건 이제 대부분 아는 내용이긴 하다. 그런데 생소한 게 하나 있었는데, 바로 투포인터에 대한 내용이다. 투 포인터 투 포인터란 리스트에 순차적으로 접근해야 할 때 2개의 점의 위치를 기록하면서 처리하는 알고리즘을 의미한다. 예를 들어 1~10번 학생이 있을 때, "2번부터 7번까지 나와" 라고 하면 2번과 7번이라는 2개의 점을 이용해서 접근할 데이터의 범위를 표현한 것으로 볼 수 있다. 솔직히 이름 보면 이런 알고리즘이구나 정도는 예측 가능하다... 2022. 9. 19.
defaultdict이란? 오늘은 고수가 23줄만에 푼 문제를 1시간 반 넘게 붙잡고 뻘짓한 슬픈 날이다. 나는 dfs 문제에 좀 약한 것 같다.... 아무튼 고수들의 코드를 보니 하나같이 defaultdict를 쓴 것을 볼 수 있었다. 나는 그냥 dict을 썼다가 key error를 213539번 마주한 상태였다. dict이면 dict이지 defaultdict는 대체 무엇이란 말인가? 그래서 defaultdict이란? 객체의 기본값을 미리 지정해 놓을 수 있는 딕셔너리이다. 그러니까 이걸 쓰면 그런 키 값 없어! 하고 뱉는 keyerror로부터 자유로워질 수 있다는 말이다. from collections import defaultdict data = defaultdict(int) 예를 들어 이렇게 사용하면 값이 지정되지 않은 키.. 2022. 9. 16.
문자열로 된 수식 계산하기 이 포스트는 2021.12~2022.09 기간동안 벨로그에 작성한 글을 티스토리에 옮겨 적은 것입니다. eval 함수를 쓰면 된다. print(eval('1+1'))) #2가 출력됨 만약 계산할 수 없는 수식의 문자열이라면 에러가 발생한다. 2022. 9. 16.
알파벳 배열 쉽게 만들기 이 포스트는 2021.12~2022.09 기간동안 벨로그에 작성한 글을 티스토리에 옮겨 적은 것입니다. from string import ascii_uppercase from string import ascii_lowercase alpha = list(ascii_uppercase) print(alpha) alpha2=list(ascii_lowercase) print(alpha2) 알파벳 하나하나 쳐가면서 배열만들거나 아스키코드가 몇이엇지...26빼서 만들면 되나? 하는 그지같은 나날은 이제 끝이다. from string import ascii_lowercase 기억하자! 참고로 a->97 같은걸 원하면 ord 함수를 쓰면 된다. ord('a')=97!! 2022. 9. 14.
파이썬 깊은 복사 이 포스트는 2021.12~2022.09 기간동안 벨로그에 작성한 글을 티스토리에 옮겨 적은 것입니다. 코테 대비를 하다보면 원본배열을 복사해야할 때가 많다. graph=[0,0,0,0,0] #원본배열 tempgraph=graph #복사 tempgraph[0]=1 #복사 배열 수정 print(graph) #[1,0,0,0,0]출력 bfs 문제에서 아무생각없이 이런식으로 대입했다가 한참 헤맸다.. list,set 같은 애들한테 이렇게 하면 원본 객체를 복사하는게 아니라 같은 주소값을 참조하는 것 뿐이므로...이런사태가 발생했다. 원본 객체에 영향을 줄 수 없는 복사본 객체를 만드려면 copy.deepcopy를 사용해야 한다. import copy graph=[0,0,0,0,0] tempgraph=copy... 2022. 9. 14.
반응형