백준 153

[백준] 1966 프린터 큐 C

https://www.acmicpc.net/problem/1966 1966번: 프린터 큐 여러분도 알다시피 여러분의 프린터 기기는 여러분이 인쇄하고자 하는 문서를 인쇄 명령을 받은 ‘순서대로’, 즉 먼저 요청된 것을 먼저 인쇄한다. 여러 개의 문서가 쌓인다면 Queue 자료구조에 www.acmicpc.net #define _CRT_SECURE_NO_WARNINGS #include #include int main() { int tc, N, M, i, j, cnt, pos; scanf("%d", &tc); for (i = 0; i < tc; i++) { // initialize cnt = 0; int num[10] = { 0, }; // num of objects scanf("%d %d", &N, &M); ..

STUDY/Algorithm 2021.11.29

[백준] 18258 큐2 C

https://www.acmicpc.net/problem/18258 18258번: 큐 2 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 2,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net #define _CRT_SECURE_NO_WARNINGS #include #include # define FAIL 99999999 typedef struct _Node { int data; struct _Node* next; } Node; typedef struct _Queue { Node* front; Node* rear; int size; } Queue; void in..

STUDY/Algorithm 2021.11.29

[백준] 1987 알파벳 python(pypy), c

https://www.acmicpc.net/problem/1987 1987번: 알파벳 세로 R칸, 가로 C칸으로 된 표 모양의 보드가 있다. 보드의 각 칸에는 대문자 알파벳이 하나씩 적혀 있고, 좌측 상단 칸 (1행 1열) 에는 말이 놓여 있다. 말은 상하좌우로 인접한 네 칸 중의 한 칸으 www.acmicpc.net import sys; input = sys.stdin.readline def backtrack(r, c): global answer # 1 길이 갱신 answer = max(answer, len(alphabet)) # 2 탐색 for i in range(4): nr = r + dr[i] nc = c + dc[i] if 0

STUDY/Algorithm 2021.10.26

[백준] 14499 주사위 굴리기 python

https://www.acmicpc.net/problem/14499 14499번: 주사위 굴리기 첫째 줄에 지도의 세로 크기 N, 가로 크기 M (1 ≤ N, M ≤ 20), 주사위를 놓은 곳의 좌표 x y(0 ≤ x ≤ N-1, 0 ≤ y ≤ M-1), 그리고 명령의 개수 K (1 ≤ K ≤ 1,000)가 주어진다. 둘째 줄부터 N개의 줄에 지도 www.acmicpc.net # https://www.acmicpc.net/problem/14499 import sys; input = sys.stdin.readline def rollingDice(d, dice): # d: rolling direction 1 east, 2 west, 3 north, 4 south # dice: 1 top, 6 bottom #..

STUDY/Algorithm 2021.10.17

[백준] 9205 맥주 마시면서 걸어가기

https://www.acmicpc.net/problem/9205 9205번: 맥주 마시면서 걸어가기 송도에 사는 상근이와 친구들은 송도에서 열리는 펜타포트 락 페스티벌에 가려고 한다. 올해는 맥주를 마시면서 걸어가기로 했다. 출발은 상근이네 집에서 하고, 맥주 한 박스를 들고 출발한다. www.acmicpc.net import sys; input = sys.stdin.readline from collections import deque def bfs(graph): q = deque() q.append(0) end = len(graph) - 1 visit = [-1 for _ in range(len(graph))] visit[0] = 0 while q: cur = q.popleft() if cur == ..

STUDY/Algorithm 2021.10.14

[백준] 12865 평범한 배낭 python

https://www.acmicpc.net/problem/12865 12865번: 평범한 배낭 첫 줄에 물품의 수 N(1 ≤ N ≤ 100)과 준서가 버틸 수 있는 무게 K(1 ≤ K ≤ 100,000)가 주어진다. 두 번째 줄부터 N개의 줄에 거쳐 각 물건의 무게 W(1 ≤ W ≤ 100,000)와 해당 물건의 가치 V(0 ≤ V ≤ 1,000) www.acmicpc.net import sys; input = sys.stdin.readline N, K = map(int, input().split()) stuff_list = [tuple(map(int, input().split())) for _ in range(N)] memo = [[0 for _ in range(K + 1)] for _ in range..

STUDY/Algorithm 2021.10.12

[백준] 2565 전깃줄 python

https://www.acmicpc.net/problem/2565 2565번: 전깃줄 첫째 줄에는 두 전봇대 사이의 전깃줄의 개수가 주어진다. 전깃줄의 개수는 100 이하의 자연수이다. 둘째 줄부터 한 줄에 하나씩 전깃줄이 A전봇대와 연결되는 위치의 번호와 B전봇대와 연결되는 www.acmicpc.net import sys; input = sys.stdin.readline def checkCross(cables, ignore_idx_set): cross = [0 for _ in range(len(cables))] for i in range(len(cables)): if i in ignore_idx_set: continue s1, e1 = cables[i] for j in range(i + 1, len(c..

STUDY/Algorithm 2021.10.11

[백준] 2021 최소 환승 경로 python

https://www.acmicpc.net/problem/2021 2021번: 최소 환승 경로 첫째 줄에 역의 개수 N(1≤N≤100,000), 노선의 개수 L(1≤L≤100,000)이 주어진다. 다음 L개의 줄에는 각 노선이 지나는 역이 순서대로 주어지며 각 줄의 마지막에는 -1이 주어진다. 마지막 줄에는 출발 www.acmicpc.net import sys; input = sys.stdin.readline from collections import deque N, L = map(int, input().split()) station = [list() for _ in range(N+1)] line = [list() for _ in range(L)] for i in range(L): tmp = list(m..

STUDY/Algorithm 2021.08.15

[백준] 3055 탈출 python

https://www.acmicpc.net/problem/3055 3055번: 탈출 사악한 암흑의 군주 이민혁은 드디어 마법 구슬을 손에 넣었고, 그 능력을 실험해보기 위해 근처의 티떱숲에 홍수를 일으키려고 한다. 이 숲에는 고슴도치가 한 마리 살고 있다. 고슴도치는 제 www.acmicpc.net from collections import deque import sys; input = sys.stdin.readline def bfs_step(start_array, visited, opposit_visited, isSonic): delta = [(-1, 0), (1, 0), (0, -1), (0, 1)] ret = deque() while start_array: cur_x, cur_y = start_ar..

STUDY/Algorithm 2021.08.10

[백준] 1912 연속합, python, C

https://www.acmicpc.net/problem/1912 1912번: 연속합 첫째 줄에 정수 n(1 ≤ n ≤ 100,000)이 주어지고 둘째 줄에는 n개의 정수로 이루어진 수열이 주어진다. 수는 -1,000보다 크거나 같고, 1,000보다 작거나 같은 정수이다. www.acmicpc.net N = int(input()) nums = list(map(int, input().split())) dp = [-200000000 for _ in range(N + 1)] for i in range(N): dp[i + 1] = max(dp[i] + nums[i], nums[i]) print(max(dp)) 처음엔 슬라이딩 윈도우라고 생각해서 브루트포스 방식으로 접근했는데 시간초과가 나왔다. O(N^2) 그래..

STUDY/Algorithm 2021.07.27