Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
주 목표 문제 수: 3개
지난 주 발제 문제: 백준 #18352. 특정 거리의 도시 찾기: 그래프 / 실버2
정리한 링크: (바로가기)
🚩플로우 (선택)
N, 도로의 개수M, 최단거리K, 출발도시 번호X를 입력받고, 방문여부를 판단하는visited리스트와 그래프로 표현할graph리스트, 정답을 저장할answer리스트를 초기화한다. 이때visited리스트는 방문 여부를 판단할 뿐만 아니라 거리를 저장하는 역할로써 사용한다.queue를 deque 자료형으로 선언한다.queue가 있는 동안 아래 과정을 반복한다.queue에 추가하고, 방문 표시를 한다. 이때 방문 표시는 현재 노드의 거리에 +1을 해준다.visited[connected_node])가 최단거리 k와 같다면answer리스트에 추가한다.answer리스트를 반환받는다.answer리스트가 존재하지 않는 경우는 최단 거리k인 도시가 하나도 존재하지 않는 경우이기 때문에 -1을 출력하고,존재하는 경우에는 오름차순으로 정렬한 후 한 줄에 하나씩 출력한다.
🚩제출한 코드
💡TIL
백준 #13305. 주유소: 그리디 / 실버3
정리한 링크: (바로가기)
🚩플로우 (선택)
n, 도로의 길이를road리스트, 각 도시의 리터당 가격을oil_price리스트에 저장을 하고, 최저 비용인min_cost는 0으로, 도시의 기름 가격을 나타내는min_price는 첫 번째 도시의 기름 가격으로 초기화한다.min_price로 갱신한다.min_cost에 최소 가격과 현재 도로의 길이를 곱한 값을 누적하여 계산한다.min_cost를 출력한다.🚩제출한 코드
💡TIL
백준 #9148. 신나는 함수 실행: DP / 실버2
정리한 링크: (바로가기)
🚩플로우 (선택)
(a, b, c)로 접근해야 하므로 리스트가 아니라 딕셔너리memo를 초기화한다.memo딕셔너리에 값이 저장되도록 하고, 마지막에memo[(a, b, c)]의 값을 반환하도록 설정한다.-1 -1 -1이 입력될 때까지 무한 반복하여a, b, c를 입력받는다. 문제에서 설정한 출력형식에 맞게w함수의 결과를 반환한다.🚩제출한 코드
💡TIL
백준 #14940. 쉬운 최단거리: 그래프 / 실버1
정리한 링크: (바로가기)
🚩플로우 (선택)
n, 가로 길이m, 지도 정보를grid리스트로 입력받는다.find_distance_to_goal를 호출한다.distances을 -1로 초기화한다. (거리 정보가 없는 경우 -1로 해야 하기 때문에)grid를 순회하며 목표지점인2와 땅이 아닌 지점0을 찾아내어 거리 배열distances에 해당하는 위치의 값을 0으로 설정한다.(target_x, target_y)의 위치를 큐queue에 첫번째 값으로 초기화한다.directions도 설정한다.queue에 값이 있는 동안 현재 지점을 꺼내와 상하좌우 인접한 지점이 지도 범위 안에 있고, 갈 수 있는 땅(1)이고, 아직 방문하지 않았을 경우에 인접한 지점의 거리를 현재 거리+1로 설정하고 큐에 추가한다.queue에 값이 없어질동안 e 과정을 반복하여 BFS 탐색한다distances를 반환한다.distances를 한 줄에 공백을 두어 출력한다.🚩제출한 코드
💡TIL
BFS로 탐색할 때는 상하좌우 방향 리스트
directions도 필요하다.문제를 너무 어렵게 생각했던 것 같다. 이럴 때에는 갈 수 없는 부분, 갈 수 있는 부분을 ‘조건문’을 두어 구분한다.
큐에 무엇을 넣어야 할 지 고민해보자.
공백을 구분하여 출력하려면, 2중 for문을 사용해도 되지만 아래와 같이 코드를 작성하면 된다.
이 문제가 대표적인 BFS 문제라고 한다. 이런 유형을 자주 풀어서 BFS도 정복해야겠다!
백준 #30802. 웰컴키트: 수학 / 브론즈3
정리한 링크: (바로가기)
🚩플로우 (선택)
T로 나눈 몫에 올림처리하면 된다.N을P로 나눈 몫(N//P)이 최대 주문할 수 있는 묶음 수이고,N을P로 나눈 나머지(N%P)가 한 자루씩 주문해야 하는 수이다.🚩제출한 코드
💡TIL
ceil(), floor(), round()ceil(): 소수점 자리에서 무조건 올림floor(): 소수점 아래 다 무시round(): 반올림 함수백준 #28702. FizzBuzz: 수학, 문자열 / 브론즈1
정리한 링크: (바로가기)
🚩플로우 (선택)
fizzbuzz을 초기화하고 입력받는다fizzbuzz에 숫자가 있는지 파악한다. 숫자가 있다면, 해당 문자열의 위치를 통해 정답을 구하고answer변수에 저장한다.FizzBuzz규칙에 따라 3 또는 5의 배수인 경우 해당하는 문자를 출력하고 해당하지 않을 경우answer그대로 출력한다.🚩제출한 코드
💡TIL
다른 분의 코드를 보고 배웠다.
출처
어떻게 코드를 간단하게 할 수 있는지 감탄하였다.
print('Fizz'*(n % 3 == 0) + 'Buzz'*(n % 5 == 0) or n)백준 #31403. A+B-C: 수학 / 브론즈4
(안 풀어도 되지만 solved.ac Class 1을 마무리하려고 풀었음)
🚩제출한 코드
백준 #18405. 경쟁적 전염: 그래프 / 골드5
정리한 링크: (바로가기)
🚩플로우 (선택)
n, 바이러스의 개수k, 시험관 정보grid리스트, 결과를 확인하고자 하는 초s, 위치x,y를 입력받는다.grid리스트를 순회하며 바이러스의 정보를 바이러스 정보 리스트인virus_info에 저장한다.(바이러스의 번호, 시간, x좌표, y좌표)virus_info를 오름차순으로 정렬한다.queue에virus_info를 넣어 초기화한다.queue가 빌 때까지 아래 과정을 반복한다.queue에서 바이러스 정보를 꺼내 바이러스 번호virus_num, 현재 시간time, x좌표x, y좌표y에 저장한다.time)이 목표한 시간(s)과 같다면 반복을 종료한다.nx,ny를 계산하여 새로운 위치가 시험관 범위 안에 있고 아직 바이러스가 없는 경우 현재의 바이러스(virus_num)를 전파한다. 이후 해당 바이러스의 정보를 큐queue에 추가한다.🚩제출한 코드
💡TIL