Baekjoon 150

[백준 13335번] 트럭

https://www.acmicpc.net/problem/13335import sysinput = sys.stdin.readlinefrom collections import deque# 강을 가로지르는 하나의 차선으로 된 다리# 이 다리를 n 개의 트럭이 건너가려고 한다# 트럭의 순서는 바꿀 수 없으며, 트럭의 무게는 서로 같지 않을 수 있다.# 다리 위에는 단지 w 대의 트럭만 동시에 올라갈 수 있다. # 각 트럭들은 하나의 단위시간(unit time)에 하나의 단위길이만큼만 이동할 수 있다고 가정# 동시에 다리 위에 올라가 있는 트럭들의 무게의 합은 다리의 최대하중인 L보다 작거나 같아야 한다.# 참고로, 다리 위에 완전히 올라가지 못한 트럭의 무게는 다리 위의 트럭들의 무게의 합을 계산할 때 포함하..

[백준 24444번] 알고리즘 수업 - 너비 우선 탐색 1

https://www.acmicpc.net/problem/24444import sysinput = sys.stdin.readlinefrom collections import deque# N개의 정점과 M개의 간선으로 구성된 무방향 그래프(undirected graph)가 주어진다# 정점 번호는 1번부터 N번, 모든 간선의 가중치는 1# 정점 R에서 시작하여 너비 우선 탐색으로 노드를 방문할 경우 노드의 방문 순서를 출력n, m, r = map(int,input().split())graph = [[] for _ in range(n+1)]visited = [0]*(n+1)for _ in range(m): u, v = map(int,input().split()) graph[u].append(v) ..

Algorithm/BFS 2024.07.02

[백준 11559번] Puyo Puyo

https://www.acmicpc.net/problem/11559import sysfrom collections import dequeinput = sys.stdin.readline# 필드에 여러 가지 색깔의 뿌요를 놓는다# 뿌요는 중력의 영향을 받아 아래에 바닥이나 다른 뿌요가 나올 때까지 아래로 떨어진다.# 뿌요를 놓고 난 후, 같은 색 뿌요가 4개 이상 상하좌우로 연결되어 있으면 연결된 같은 색 뿌요들이 한꺼번에 없어진다# 이때 1연쇄가 시작된다.# 뿌요들이 없어지고 나서 위에 다른 뿌요들이 있다면, 역시 중력의 영향을 받아 차례대로 아래로 떨어지게 된다.# 아래로 떨어지고 나서 다시 같은 색의 뿌요들이 4개 이상 모이게 되면 또 터지게 되는데, 터진 후 뿌요들이 내려오고 다시 터짐을 반복할 때마..

[백준 12891번] DNA 비밀번호

https://www.acmicpc.net/problem/12891import sysinput = sys.stdin.readline# DNA 문자열은 모든 문자열에 등장하는 문자가 {‘A’, ‘C’, ‘G’, ‘T’} 인 문자열# 임의의 DNA 문자열을 만들고 만들어진 DNA 문자열의 부분문자열을 비밀번호로 사용# 부분문자열에서 등장하는 문자의 개수가 특정 개수 이상이여야 비밀번호로 사용할 수 있다# 단, 부분문자열이 등장하는 위치가 다르다면 부분문자열이 같다고 하더라도 다른 문자열로 취급한다.s_length, p_length = map(int,input().split())string = input().rstrip()a, c, g, t = map(int,input().split())dictionary =..

[백준 2531번] 회전 초밥

https://www.acmicpc.net/problem/2531import sysfrom collections import deque# 회전하는 벨트 위에 여러 가지 종류의 초밥이 접시에 담겨 놓여 있고, 손님은 이 중에서 자기가 좋아하는 초밥을 골라서 먹는다# 1. 벨트의 임의의 한 위치부터 k개의 접시를 연속해서 먹을 경우 할인된 정액 가격으로 제공# 2. 각 고객에게 초밥의 종류 하나가 쓰인 쿠폰을 발행하고, 1번 행사에 참가할 경우 이 쿠폰에 적혀진 종류의 초밥 하나를 추가로 무료로 제공# (만약 이 번호에 적혀진 초밥이 현재 벨트 위에 없을 경우, 요리사가 새로 만들어 손님에게 제공)input = sys.stdin.readlinen, d, k, c = map(int,input().split()..

[백준 21921번] 블로그

https://www.acmicpc.net/problem/21921import sys # X일 동안 가장 많이 들어온 방문자 수와 기간 # 첫째 줄에 X일 동안 가장 많이 들어온 방문자 수를 출력 # 만약 최대 방문자 수가 0명이라면 SAD를 출력 # 만약 최대 방문자 수가 0명이 아닌 경우 둘째 줄에 기간이 몇 개 있는지 출력 n, x = map(int,input().split()) input = sys.stdin.readline visit_counts = list(map(int,input().split())) # 1. 시간복잡도 O(N^2) 풀이 # answer = 0 # count = 0 # for i, value in enumerate(visit_counts): # if 0 max_value: m..

[백준 2559번] 수열

https://www.acmicpc.net/problem/2559import sys input = sys.stdin.readline n, k = map(int,input().split()) temp_list = list(map(int,input().split())) value = sum(temp_list[:k]) answer = value for i in range(k,n): value -= temp_list[i-k] value += temp_list[i] answer = max(answer,value) print(answer)이번 문제는 N일 동안 측정된 온도에서 연속 K일간 측정했을 때의 최댓값을 구하는 문제이다. 해당 문제는 단순히 완전탐색으로 풀게되면 O(N*K)의 시간복잡도가 나오게 되는데, N..

[백준 5014번] 스타트링크

# 스타트링크는 총 F층으로 이루어진 고층 건물에 사무실이 있다# 스타트링크가 있는 곳의 위치는 G층이다# 강호가 지금 있는 곳은 S층# 엘리베이터는 버튼이 2개밖에 없다# U버튼은 위로 U층을 가는 버튼, D버튼은 아래로 D층을 가는 버튼# (만약 U층 위, 또는 D층 아래에 해당하는 층이 없을 때는, 엘리베이터는 움직이지 않는다)# 강호가 G층에 도착하려면, 버튼을 적어도 몇 번 눌러야 하는지 구하는 프로그램# 만약, 엘리베이터를 이용해서 G층에 갈 수 없다면, "use the stairs"를 출력from collections import dequeF, S, G, U, D = map(int,input().split())visited = [False]*1000001answer = float("inf")..

Algorithm/BFS 2024.06.09