알고리즘 오답노트 양식
반복 연산은 한번 한번이 소중하다. 한번 했을 때, 최대한 많은 정보를 구하고 다음으로 넘어가자.
이걸 생각해낸 사람은 천잰가?
편법 부릴 생각 말고 정석으로 조금만 더 고민해봐라.
dfs가 미숙하면 생기는 일
회의를 시작하자마자 끝내버리는 게 무슨 회의인진 모르겠다만...
뭔가 heapq를 쓰면 시간복잡도가 줄어든다는 내용
그렇게 난이도가 높은 것 같지는 않은데, 막막하면 점화식일 가능성 매우 높음!
내 수준에서는 어려운 문제(골드 4)인데, 아이디어가 금방 생각났고, 막힘없이 풀어서 통과까지 한 기념으로 뿌듯해서 코드를 올려본다.
플로이드-와샬 알고리즘 문제 중에 가장 쉬운 문제가 이거 아닐까?
가독성을 챙기려고 BabyShark 클래스까지 별도로 만들었습니다! 코딩 테스트에 클래스 선언이 웬말이냐
결과값이 어차피 나머지라면, 굳이 나머지 연산하기 이전의 그 큰 수를 다 계산할 필요 없다.
솔브닥 CLASS 4의 난관이자 코딩테스트를 위해 반드시 넘어야 하는 벽인 최단 경로 알고리즘에 대해 소개한다. 눈으로 보지만 말고, 반드시 직접 파이썬으로 구현해보자!
위 글이 너무 길어서 구현 부분을 따로 보면서 외우기가 힘드니까 구현부만 발췌한 글을 새로 작성한다. 알고리즘에 대한 설명은 따로 하지 않겠다.
0-1 BFS는, 0의 가중치를 가진 정점을 왼쪽에 추가하는 것만 빼면 그냥 BFS랑 똑같습니다... 겁먹지 마세요
레퍼런스 도움 안 받고 5트만에 풀어낸 문제!
최대공약수, 최소공배수 구하기도 어렵네;;
알고리즘 분류가 구현이라는 말은, 그냥 말그대로 빡구현하면 된다는 거다. 시간 복잡도를 줄일 만한 독특한 기법 같은건 없다. Off-By-One Error를 조심하자.
백트래킹의 가장 대표격 문제라 할 수 있는 N-Queen 문제다. 너무 클리셰고 최적화 기법도 많이 들어있으니, 시간 나면 외우자.
그래프 간선 방향을 역으로 바꾸면 생기는 일
벽을 제거할 수 있는 BFS 최단거리 문제... 3차원 visited 배열로 해결한다?
dp 배열을 사용하지 않았던 다이나믹 프로그래밍 문제
신기하게도 Gold 2인데, 브루트 포스 문제다! 하지만 그런 이유가 있지. 굳이 문제를 '그대로' 구현할 필요는 없는 법! 이 문제에서도 진짜 일일이 N!개를 다 매칭시킬 필요는 없었다.
오큰수 = 오른쪽에 있는 수 중에 처음으로 나오는 나보다 큰 수
단순 구현 문제다. raise를 활용하여 깔끔하게 코딩된 것 같아 올린다.
제한이 매우 작으면, 4중 for문도 쓸 수 있구나~ 플로이드-워셜처럼
투 포인터 문제를 풀 때는, 1. 이분 탐색과 헷갈리지 말 것. 2. left, right 초깃값에 대해 신중히 생각할 것.
세그먼트 트리까지는 그렇다 쳐도, 펜윅 트리 생각해낸 사람은 진짜 천재가 아닌가 싶다. 너무 코드가 깔끔하다.
세그먼트 트리 활용 문제는, 세그먼트 트리 문제인줄 모르게 나온다.
원형 2xn 타일링(하지만 1x1 블럭도 쓸 수 있는...)
테스트케이스가 추가되면서, 그동안 떠돌아다니던 외판원 순회 풀이의 허점이 발견되었다.