백준 알고리즘 21

[백준/BOJ] 10815 - 숫자 카드

10815 - 숫자 카드 📌 문제 숫자 카드는 정수 하나가 적혀져 있는 카드이다. 상근이는 숫자 카드 N개를 가지고 있다. 정수 M개가 주어졌을 때, 이 수가 적혀있는 숫자 카드를 상근이가 가지고 있는지 아닌지를 구하는 프로그램을 작성하시오. 📋 코드 def binary_search(target, left, right): while left target: right = mid - 1 else: left = mid + 1 return 0 N = int(input()) card = list(map(int, input().split())) M = int(input()) check_card = list(map(int, input().split())) card.sort() result = [] for num in..

[백준/BOJ] 16953 - A → B

16953 - A -> B 📌 문제 정수 A를 B로 바꾸려고 한다. 가능한 연산은 다음과 같은 두 가지이다. 2를 곱한다. 1을 수의 가장 오른쪽에 추가한다. A를 B로 바꾸는데 필요한 연산의 최솟값을 구해보자. 📋 코드 from collections import defaultdict from collections import deque def bfs(start, visited): q = deque() q.append(start) visited[start] = 1 while q: x = q.popleft() if x == B: return visited[x] for i in (x * 2, int(str(x) + '1')): if 0

[백준/BOJ] 9694 - 무엇을 아느냐가 아니라 누구를 아느냐가 문제다

9694 - 무엇을 아느냐가 아니라 누구를 아느냐가 문제다 📌 문제 한신이는 젊고, 똑똑하고 매우 유명한 정치인이다. 그럼에도 그는 여전히 자신의 성공을 위해서도 인간관계는 중요한것이라고 믿고있다. 다음달에 열릴 국회의원선거에서 한신이는 자신의 당이 반드시 이기길 희망한다. 그러기 위해서 최고의원의 지지가 필요하다. 이 최고의원의 지지를 받기위해 한신이는 전략을 세웠다. 그는 그 최고의원을 직접적으로 만날수 없다면 그를 알고있는 인맥을 이용하여 만날것이다. 이것을 위해서 우선 정치인들의 친밀도를 조사하였는데 친밀도를 다음 4단계로 나누어서 기록해놓았다. 최측근 [1] / 측근 [2] / 비즈니스관계 [3] / 지인 [4] [두 사람의 관계는 이 4가지 경우중 반드시 해당되며, 적(enemy)는 존재하지 ..

[백준/BOJ] 13549 - 숨바꼭질 3

13549 - 숨바꼭질 3 📌 문제 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 때 걷는다면 1초 후에 X-1 또는 X+1로 이동하게 된다. 순간이동을 하는 경우에는 0초 후에 2*X의 위치로 이동하게 된다. 수빈이와 동생의 위치가 주어졌을 때, 수빈이가 동생을 찾을 수 있는 가장 빠른 시간이 몇 초 후인지 구하는 프로그램을 작성하시오. 📋 코드 from collections import deque def bfs(i, visited): q = deque() q.append(i) visited[i] = True while q: x..

[백준/BOJ] 3020 - 개똥벌레

3020 - 개똥벌레 📌 문제 개똥벌레 한 마리가 장애물(석순과 종유석)로 가득찬 동굴에 들어갔다. 동굴의 길이는 N미터이고, 높이는 H미터이다. (N은 짝수) 첫 번째 장애물은 항상 석순이고, 그 다음에는 종유석과 석순이 번갈아가면서 등장한다. 아래 그림은 길이가 14미터이고 높이가 5미터인 동굴이다. (예제 그림) 이 개똥벌레는 장애물을 피하지 않는다. 자신이 지나갈 구간을 정한 다음 일직선으로 지나가면서 만나는 모든 장애물을 파괴한다. 위의 그림에서 4번째 구간으로 개똥벌레가 날아간다면 파괴해야하는 장애물의 수는 총 여덟개이다. (4번째 구간은 길이가 3인 석순과 길이가 4인 석순의 중간지점을 말한다) 하지만, 첫 번째 구간이나 다섯 번째 구간으로 날아간다면 개똥벌레는 장애물 일곱개만 파괴하면 된다..