728x90

코딩테스트 103

백준 1260번 DFS와 BFS 풀이/코드 (파이썬) 자꾸 오류가 나는 경우 간단한 해결 방법

일단 코드만 궁금한 분은, 언제나 처럼 깃허브링크 GitHub - Rhyankwon/algorithms Contribute to Rhyankwon/algorithms development by creating an account on GitHub. github.com 정말 간단한.. 기본중의 기본탐색문제이다. 이거 못풀면 아무- 그래프 문제도 못 푼다고 보면 된다..라고 생각했는데 날 거의 3시간 가량 괴롭혔다. 하지만 여전히, 엄청 엄청 기초문제라는 사실은 변하지 않는다. 우선 어떻게 푸는지 설명 대강 하고, 마지막에 왜 내가 세시간 날려먹었나 한을.. 풀도록 하겠-다. 내가 푼 논리 (그냥 bfs dfs라 사실 논리랄것도없지만) 0. 미리 딕셔너리나 리스트에 각 노드마다 어떤 노드와 연결돼있는지 저장..

백준 2667번 단지번호붙이기 문제 해설/풀이/코드 (파이썬) 기본 스택 문제

코드만 궁금한 분은 깃허브링크 제목에 쓴것처럼 기초 스택문제이다. 주어진 이중리스트는(이하 격자) 1과 0으로 구성돼있다. 해당 격자에서 1끼리 서로 인접해있는 경우 그걸 한 덩이로 봤을때 총 몇 덩이가 있고 각각 몇개의 격자로 구성돼있는지를 알아내야하는 문제이다. 문제 풀기 1. 이중 for문으로 모든 요소에 대해서 1인지 확인. 2. 만약 1인 요소 찾으면 스택에 넣고 근처에 인접한 요소중에 1이 있는지 확인하기 2. 이 때 이미 1을 찾은 부분은 0으로 표시하고 1->0으로 바꾼 갯수를 센다. 4. 근처 인접한 요소에 더이상 1이없으면 갯수 저장하고 1번부터 반복. 기본중의 기본중의 기본 스택문제이다. 이거 못풀면 아무 스택문제도 못푼다고 보면된다. 다시 말하면 스택 기본 연습하기에 좋은 문제.

백준 1038번 감소하는 수 풀이/해설/코드 (파이썬) 다소 까다로운 재귀 + 구현문제

코드만 궁금한 분은 링크 GitHub - Rhyankwon/algorithms Contribute to Rhyankwon/algorithms development by creating an account on GitHub. github.com 문제 풀이는 스킵! 우선 문제를 보면 바로 알겠지만 적당히 재귀나..브루트포스같은걸 활용하면 되겠거니 싶지만 구현이 다소 귀찮거나 어려울거라는 감이 딱 오는..문제이다. 내가 푼 방법은 두개가 있는데, 위의 풀이부터 설명하자면 1. 10의자리까지만 감소하는 수가 가능하므로 1~10의 자릿수..의 길이에 따라서 반복하는데, 2. 맨 앞자리는 아무 숫자나 와도 되고, 그 뒤부터는 앞자리보단 작은 수가 오도록 한다. 3. 자릿수가 전부 채워질 때마다 숫자를 1씩 카운트 ..

백준 1916번 최소비용 구하기 풀이/해설/코드 (파이썬) 다익스트라 알고리즘 활용하기!

코드만 궁금한 분은 링크 GitHub - Rhyankwon/algorithms Contribute to Rhyankwon/algorithms development by creating an account on GitHub. github.com 전에 다익스트라 알고리즘을 접해본 적이 있어서, 딱 보자마자 다익스트라구나..햇던 문제이다. 내가 처음 코딩테스트를 준비하면서 샀던 책이 파이썬 알고리즘 인터뷰인데 해당 문제는 41번에 있다. 별개의 이야기이긴 하지만 정말 추천하는 책이기 때문에 코딩테스트를 처음 준비하는 사람들에게 추천한다. 깃허브에 코드가 올라와있어서 해볼 수도 있다. GitHub - onlybooks/algorithm-interview: 95가지 알고리즘 문제 풀이로 완성하는 95가지 알고리즘..

백준 2294번 동전 2 풀이/해설/코드 (파이썬) 다이나믹 프로그래밍을 활용해보자

코드만 궁금한 분은 깃허브링크 사실 내가 dp를 잘 하는 편은 아닌데 2293번 어제 푼거를 머릿속에 생각해보면서 푸니까 그래도 다소 어렵지 않게 풀 수 있었다. 문제를 대충 알려주자면, 1, 2, 5 이런식으로 무작위의 숫자들과 다른 숫자 임의의 숫자 하나가(예시를 들기 위해 10으로 한다.) 주어진다. 이 때 앞쪽에 주어진 숫자 1, 2, 5들을 이용해 10을 구성하는데 그 때 가장 적은 수로 숫자들을 이용하는 경우를 반환하면 된다. 말이 좀 이상한데, 간단히 얘기해서 10은 1을 10번 써도 되지만 5를 2번 써도 된다. 그럼 2가 더 작으니까 답은 2가 된다. 문제 풀기 1. 구성해야 하는 숫자 N의 길이만큼의 리스트를 미리 만든다. 2. 앞에 무작위로 주어졌던 숫자들 중 작은 수부터 활용해서, ..

백준 2293번 동전 1 문제 해설/풀이/코드 (파이썬) 다이나믹 프로그래밍 활용..!

코드만 궁금한 분은 깃허브링크 GitHub - Rhyankwon/algorithms Contribute to Rhyankwon/algorithms development by creating an account on GitHub. github.com 문제 이해는 쉽다. 10이 있고, 1원 2원 5원짜리 동전이 있으면 그 동전들을 막 조합해서 10을 만들면 되는데, 그렇게 10이 되는 주어진 동전들의 조합의 총 갯수를 반환하면 된다. 간단한 다이나믹 프로그래밍이다. 1부터 10까지 가능한 동전의 조합 수를 dp라고 하자. 우선 위에 내가 서술한 문제로 보면, dp[10]은 dp[9] + dp[8] + dp[5]이다. 왜냐면, 9까지 만든 다음 거기에 1원짜리 동전 하나를 더하고, 8까지 만든다음 거기에 2원..

백준 3085번 사탕게임 풀이/해설/코드 (파이썬) 112ms풀이 /DFS

코드만 궁금한 분은 링크 GitHub - Rhyankwon/algorithms Contribute to Rhyankwon/algorithms development by creating an account on GitHub. github.com 문제 : 숫자들이 든 격자가 주어진다. 이 때 인접한 요소 두개를 아무거나 바꿀 수 있는데, 이 때 전체 격자에서 일직선으로 인접한 요소들의 숫자가 같은 경우...의 가장 긴 길이를 구하면 된다. 일단 내 풀이는 대충 dfs를 활용한 완전탐색이다. 1. For문으로 각 요소마다, 왼쪽 위 오른쪽 아래 각 방향으로 탐색을 하는데 2. 다음 요소의 값이 현재값(시작값)과 같은 경우 계속 탐색을 한다. 3. 이 때 만약 어떤 값이 시작값과 다르고, 아직 한번도 인접요소와..

백준 1197번 최소 스패닝 트리 해설/풀이/코드 (파이썬) 시간 초과 해결하기..!

코드만 궁금한 분은 링크를 눌러주세용 간선과 정점이 몇개씩 주어지는데 이 때 각 간선에는 가중치가 있다. 이 정점들과 간선들로 트리를 구성할 건데 이 때 간선들의 가중치의 합이 최소인 경우의 트리의 가중치의 합을 반환하면 되는 문제이다. 전에 풀었던 유형이라 나는 그렇게 어렵지 않게 풀긴 했다. 트리이므로 사이클은 만들면 안되고, 아무 정점에서나 시작해서 매번 가장 작은 가중치를 갖는 간선을 선택하는 식으로 모든 정점을 방문하면 된다. 이 때 우연히 더 큰 가중치를 갖는 간선을 택하면 어떻게 되느냐 라고 물을 수도 있지만, 어떤 정점을 방문할 때에는 이전 정점에 연결된 모든 간선을 다 스택에 넣고 힙을 통해서 가중치가 작은 순서로 간선을 빼가는 방식으로 다른 정점을 방문하기 때문에 만약 어떤 정점을 방문..

백준 1789번 수들의 합 풀이/해설/코드 (파이썬)

코드만 궁금한 분은 링크 GitHub - Rhyankwon/algorithms Contribute to Rhyankwon/algorithms development by creating an account on GitHub. github.com 임의의 숫자가 하나 주어진다. 이 숫자를 임의의 자연수들의 합으로 나타낼 때 각각 다른 최대 몇개의 자연수들의 합으로 이 수를 나타낼 수 있을까? 어..어..어떻게풀지..! 라는 생각을 처음에 잠깐 할지 모르지만 조금만 생각해보면 쉬운 문제이다. 3을 생각해보자. 1+2 이렇게 두개로 나타낼 수 있다. 5를 생각해보자. 2+3으로 나타낼 수 있다. 이는 1+2+3에서 앞의 1을 뺀 값이다. 8을 생각해보자. 1+2+3+4는 10이라, 2가 더 크다. 그럼 여기에서 ..

백준 1806번 부분합 풀이/해설/코드 (파이썬)

코드만 궁금한 분은 링크 GitHub - Rhyankwon/algorithms Contribute to Rhyankwon/algorithms development by creating an account on GitHub. github.com 문제 설명 숫자로 이루어진 리스트가 주어지고 임의의 숫자가 주어진다. 그 리스트 안에서 연속된 숫자들의 합으로 임의의 숫자와 같거나 큰 수를 만들 수 있는데 그 연속된 숫자열들 중 가장 길이가 짧은 것의 길이를 반환해야 한다. 문제 풀이 전형적인 투포인터문제이다. 1. 리스트의 왼쪽 끝 부분과 오른쪽 끝 부분을 가리키는 포인터를 만든다. 2. for문이나 while문을 사용해서 왼쪽끝~오른쪽끝까지의 합을 계산한다. 3. 계산된 값이 조건으로 주어진 값보다 크면 길이..

728x90