반응형

개발 연습장/백준 문제풀이 221

[파이썬, Python] 백준 21610: 마법사 상어와 비바라기

문제https://www.acmicpc.net/problem/21610 코드import sysinput = sys.stdin.readlinen, m = map(int, input().split())buckets = [list(map(int, input().split())) for _ in range(n)]cloud = [[n - 1, 0], [n - 1, 1], [n - 2, 0], [n - 2, 1]]def move_cloud(): move_cloud = [] order = [(0, 0), (0, -1), (-1, -1), (-1, 0), (-1, 1), (0, 1), (1, 1), (1, 0), (1, -1)] d, s = map(int, input().split()) dir =..

[자바, Java] 백준 31575: 도시와 비트코인

문제 https://www.acmicpc.net/problem/31575 31575번: 도시와 비트코인 전날에 비해 비트코인의 시세가 백만원이나 오른 어느 아침, 진우는 거래소에 가서 비트코인을 매도하려고 한다. 현재 비트코인의 시세가 점점 떨어지고 있기 때문에 진우는 최대한 빨리 거래 www.acmicpc.net 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.*; public class Main { static int n; static int m; static int[][] city; static boolean[][] visited; public s..

[파이썬, Python] 백준 2096: 내려가기

문제 https://www.acmicpc.net/problem/2096 2096번: 내려가기 첫째 줄에 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 숫자가 세 개씩 주어진다. 숫자는 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 중의 하나가 된다. www.acmicpc.net 코드 n = int(input()) board = list(map(int, input().split())) top = board bottom = board for _ in range(n - 1): board = list(map(int, input().split())) top = [board[0] + max(top[0], top[1]), board[1] + max(top), board[2] + max(top..

[파이썬, Python] 백준 21736: 헌내기는 친구가 필요해

문제 https://www.acmicpc.net/problem/21736 21736번: 헌내기는 친구가 필요해 2020년에 입학한 헌내기 도연이가 있다. 도연이는 비대면 수업 때문에 학교에 가지 못해 학교에 아는 친구가 없었다. 드디어 대면 수업을 하게 된 도연이는 어서 캠퍼스 내의 사람들과 친해지고 www.acmicpc.net 코드 import sys sys.setrecursionlimit(10**6) input = sys.stdin.readline n, m = map(int, input().split()) land = [list(input()) for _ in range(n)] visited = [[False for _ in range(m)] for _ in range(n)] dx, dy = [1, ..

[파이썬, Python] 백준 1753: 최단경로

문제 https://www.acmicpc.net/problem/1753 1753번: 최단경로 첫째 줄에 정점의 개수 V와 간선의 개수 E가 주어진다. (1 ≤ V ≤ 20,000, 1 ≤ E ≤ 300,000) 모든 정점에는 1부터 V까지 번호가 매겨져 있다고 가정한다. 둘째 줄에는 시작 정점의 번호 K(1 ≤ K ≤ V)가 www.acmicpc.net 코드 import sys import heapq input = sys.stdin.readline INF = int(1e9) V, e = map(int, input().split()) start = int(input()) graph = [[] for _ in range(V + 1)] for _ in range(e): u, v, w = map(int, inp..

[파이썬, Python] 백준 7562: 나이트의 이동

문제 https://www.acmicpc.net/problem/7562 7562번: 나이트의 이동 체스판 위에 한 나이트가 놓여져 있다. 나이트가 한 번에 이동할 수 있는 칸은 아래 그림에 나와있다. 나이트가 이동하려고 하는 칸이 주어진다. 나이트는 몇 번 움직이면 이 칸으로 이동할 수 www.acmicpc.net 코드 from collections import deque import sys input = sys.stdin.readline t = int(input()) for i in range(t): l = int(input()) start = list(map(int, input().split())) dest = list(map(int, input().split())) dis = [[-1 for _ i..

[파이썬, Python] 백준 14940: 쉬운 최단거리

문제 https://www.acmicpc.net/problem/14940 14940번: 쉬운 최단거리 지도의 크기 n과 m이 주어진다. n은 세로의 크기, m은 가로의 크기다.(2 ≤ n ≤ 1000, 2 ≤ m ≤ 1000) 다음 n개의 줄에 m개의 숫자가 주어진다. 0은 갈 수 없는 땅이고 1은 갈 수 있는 땅, 2는 목표지점이 www.acmicpc.net 코드 from collections import deque n, m = map(int, input().split()) #땅, 거리 설정 land = [list(map(int, input().split())) for _ in range(n)] dis = [[0] * m for _ in range(n)] dx, dy = [1, -1, 0, 0], [0..

[파이썬, Python] 백준 2583: 영역 구하기

문제 https://www.acmicpc.net/problem/2583 2583번: 영역 구하기 첫째 줄에 M과 N, 그리고 K가 빈칸을 사이에 두고 차례로 주어진다. M, N, K는 모두 100 이하의 자연수이다. 둘째 줄부터 K개의 줄에는 한 줄에 하나씩 직사각형의 왼쪽 아래 꼭짓점의 x, y좌표값과 오 www.acmicpc.net 코드 import sys sys.setrecursionlimit(10**7) m, n, k = map(int, input().split()) ans = [] paper = [(list(0 for i in range(n))) for i in range(m)] for _ in range(k): x, y, dx, dy = map(int, input().split()) for i..

[파이썬, Python] 백준 1987: 알파벳

문제 https://www.acmicpc.net/problem/1987 1987번: 알파벳 세로 R칸, 가로 C칸으로 된 표 모양의 보드가 있다. 보드의 각 칸에는 대문자 알파벳이 하나씩 적혀 있고, 좌측 상단 칸 (1행 1열) 에는 말이 놓여 있다. 말은 상하좌우로 인접한 네 칸 중의 한 칸으 www.acmicpc.net 코드 r, c = map(int, input().split()) board = [list(input()) for i in range(r)] visited = set() ans = 0 dx = [1, -1, 0, 0] dy = [0, 0, 1, -1] def dfs(x, y): global ans visited.add(board[x][y]) ans = max(ans, len(visite..

[파이썬, Python] 백준 5525: IOIOI

문제 https://www.acmicpc.net/problem/5525 5525번: IOIOI N+1개의 I와 N개의 O로 이루어져 있으면, I와 O이 교대로 나오는 문자열을 PN이라고 한다. P1 IOI P2 IOIOI P3 IOIOIOI PN IOIOI...OI (O가 N개) I와 O로만 이루어진 문자열 S와 정수 N이 주어졌을 때, S안에 PN이 몇 www.acmicpc.net 코드 n = int(input()) m = int(input()) s = input() s = s[s.find("IOI"):s.rfind("IOI")+3] start, end = 0, 0 cnt = 0 while end < m: if s[end:end + 3] == "IOI": end += 2 if end - start ==..

반응형