알고리즘 문제 풀이 127

[백준] 16928 BFS / 뱀과 사다리 게임 파이썬

https://www.acmicpc.net/problem/16928 16928번: 뱀과 사다리 게임 첫째 줄에 게임판에 있는 사다리의 수 N(1 ≤ N ≤ 15)과 뱀의 수 M(1 ≤ M ≤ 15)이 주어진다. 둘째 줄부터 N개의 줄에는 사다리의 정보를 의미하는 x, y (x < y)가 주어진다. x번 칸에 도착하면, y번 칸으 www.acmicpc.net 문제 뱀과 사다리 게임을 즐겨 하는 큐브러버는 어느 날 궁금한 점이 생겼다. 주사위를 조작해 내가 원하는 수가 나오게 만들 수 있다면, 최소 몇 번만에 도착점에 도착할 수 있을까? 게임은 정육면체 주사위를 사용하며, 주사위의 각 면에는 1부터 6까지 수가 하나씩 적혀있다. 게임은 크기가 10×10이고, 총 100개의 칸으로 나누어져 있는 보드판에서 진..

[백준] 7569 BFS 3차원 토마토 / 파이썬 풀이

https://www.acmicpc.net/problem/7569 7569번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N과 쌓아올려지는 상자의 수를 나타내는 H가 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M ≤ 100, 2 ≤ N ≤ 100, www.acmicpc.net 문제 철수의 토마토 농장에서는 토마토를 보관하는 큰 창고를 가지고 있다. 토마토는 아래의 그림과 같이 격자모양 상자의 칸에 하나씩 넣은 다음, 상자들을 수직으로 쌓아 올려서 창고에 보관한다. 창고에 보관되는 토마토들 중에는 잘 익은 것도 있지만, 아직 익지 않은 토마토들도 있을 수 있다. 보관 후 하루가 지나면, 익은 토마토들의 인접한 곳에 있는 익지 않은 토마토들은 익은 ..

[백준] 토마토 7576 / BFS 파이썬 풀이

https://www.acmicpc.net/problem/7576 7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토 www.acmicpc.net 문제 철수의 토마토 농장에서는 토마토를 보관하는 큰 창고를 가지고 있다. 토마토는 아래의 그림과 같이 격자 모양 상자의 칸에 하나씩 넣어서 창고에 보관한다. 창고에 보관되는 토마토들 중에는 잘 익은 것도 있지만, 아직 익지 않은 토마토들도 있을 수 있다. 보관 후 하루가 지나면, 익은 토마토들의 인접한 곳에 있는 익지 않은 토마토들은 익은 토마토의 영향을 받아 익게 된다. 하나의 ..

[백준] 7562 BFS 나이트의 이동 파이썬

https://www.acmicpc.net/problem/7562 7562번: 나이트의 이동 체스판 위에 한 나이트가 놓여져 있다. 나이트가 한 번에 이동할 수 있는 칸은 아래 그림에 나와있다. 나이트가 이동하려고 하는 칸이 주어진다. 나이트는 몇 번 움직이면 이 칸으로 이동할 수 www.acmicpc.net 문제 체스판 위에 한 나이트가 놓여져 있다. 나이트가 한 번에 이동할 수 있는 칸은 아래 그림에 나와있다. 나이트가 이동하려고 하는 칸이 주어진다. 나이트는 몇 번 움직이면 이 칸으로 이동할 수 있을까? 입력 입력의 첫째 줄에는 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 세 줄로 이루어져 있다. 첫째 줄에는 체스판의 한 변의 길이 l(4 ≤ l ≤ 300)이 주어진다. 체스판의 크기는 l..

[백준] 1697 BFS 숨바꼭질 파이썬 풀이

https://www.acmicpc.net/problem/1697 문제 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 때 걷는다면 1초 후에 X-1 또는 X+1로 이동하게 된다. 순간이동을 하는 경우에는 1초 후에 2*X의 위치로 이동하게 된다. 수빈이와 동생의 위치가 주어졌을 때, 수빈이가 동생을 찾을 수 있는 가장 빠른 시간이 몇 초 후인지 구하는 프로그램을 작성하시오. 1697번: 숨바꼭질 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,..

[이코테] DFS/ BFS 실전문제 4 미로 탈출

import sys # sys.stdin.readline() from collections import deque sys.setrecursionlimit(100000000) import heapq INF = int(1e9) def bfs(graph,x,y): dx = [1,0,-1,0] dy = [0,1,0,-1] index = 2 nx = 0 ny = 0 queue = deque() queue.append((x,y)) while queue: flag = 0 a,b = queue.popleft() # 큐에서 원소 2개를 빼오고 graph[a][b] = -1 # 방문 처리해준다 for i in range(4): nx = a + dx[i] # x와 y의 방향 점검 ny = b + dy[i] if nx < 0..

[이코테] DFS/BFS 실전문제 3 음료수 얼려 먹기

전형적인 DFS 문제였다 여기로 갔다가 어떻게 돌아오지? 라는 생각이 들면 무조건 재귀를 떠올릴 것 너무 시간을 많이 까먹는게 아니라면 시간복잡도에 걸릴 일도 없고 효율적으로 탐색할 수 있다 import sys # sys.stdin.readline() from collections import deque sys.setrecursionlimit(100000000) import heapq INF = int(1e9) def dfs(graph,row,col,N,M): if row = N or col = M: return False if graph[row][col] == 0: graph[row][col] = 1 dfs(graph,row+1,col,N,M) dfs(grap..

[이코테 Python] 구현 실전문제 3 게임 개발

import sys # sys.stdin.readline() from collections import deque sys.setrecursionlimit(100000000) import heapq INF = int(1e9) N,M = map(int,input().split()) x,y,direction = map(int,input().split()) d =[[0] * M for _ in range(N)] array = [] d[x][y] = 1 for i in range(N): array.append(list(map(int,input().split()))) dx = [-1,0,1,0] dy = [0,1,0,-1] def turn_left(): global direction direction -=1 if ..

Chapter 4.구현 / 실전 문제 왕실의 나이트

import sys # sys.stdin.readline() from collections import deque sys.setrecursionlimit(100000000) import heapq INF = int(1e9) command = input() index = 1 idx = 1 array = ['a','b','c','d','e','f','g','h'] for elem in array: if array == command[0]: index = idx idx+=1 x = idx y = int(command[1]) count = 0 move_types = [(2,1),(2,-1),(-2,-1),(-2,1),(1,2),(-1,2),(1,-2),(-1,-2)] for move in move_types: ..