알고리즘/백준 109

백준 10816: 숫자 카드 2 (Python)

https://www.acmicpc.net/problem/10816 10816번: 숫자 카드 2 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10, www.acmicpc.net 채점하는데만 1분 30초는 걸려서 나 처음에 시간 초과 뜨는 줄^^,, import sys n = int(input()) card = sorted(map(int, sys.stdin.readline().split())) m = int(input()) find = list(map(int, sys.stdin.readline().split())) dict_card = d..

알고리즘/백준 2022.02.10

백준 1920: 수 찾기 (Python)

https://www.acmicpc.net/problem/1920 1920번: 수 찾기 첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들 www.acmicpc.net 반복문으로 이진탐색을 풀어주었다 import sys n = int(sys.stdin.readline().rstrip()) a = list(map(int, sys.stdin.readline().split())) m = int(sys.stdin.readline().rstrip()) b = list(map(int, sys.stdin.readline().s..

알고리즘/백준 2022.02.10

백준 1707: 이분그래프 (Python)

https://www.acmicpc.net/problem/1707 1707번: 이분 그래프 입력은 여러 개의 테스트 케이스로 구성되어 있는데, 첫째 줄에 테스트 케이스의 개수 K가 주어진다. 각 테스트 케이스의 첫째 줄에는 그래프의 정점의 개수 V와 간선의 개수 E가 빈 칸을 사이에 www.acmicpc.net 날 아주아주아주아주 화나게 한 문제다 맞는 거 같은데 자꾸 틀려서 열심히 반례 찾고 다녔다 예시 입력1 2 3 2 1 3 2 3 4 4 1 2 2 3 3 4 4 2 예시 출력1 YES NO 예시 입력2 11 3 1 2 3 3 2 1 3 2 3 4 4 1 2 2 3 3 4 4 2 3 2 2 1 3 2 4 4 2 1 3 2 4 3 4 1 5 2 1 5 1 2 5 2 1 2 2 5 4 3 1 2 4 3..

알고리즘/백준 2022.02.03

백준 7564: 나이트의 이동 (Python)

https://www.acmicpc.net/problem/7562 7562번: 나이트의 이동 체스판 위에 한 나이트가 놓여져 있다. 나이트가 한 번에 이동할 수 있는 칸은 아래 그림에 나와있다. 나이트가 이동하려고 하는 칸이 주어진다. 나이트는 몇 번 움직이면 이 칸으로 이동할 수 www.acmicpc.net from collections import deque t = int(input()) def bfs(x1, y1, x2, y2): queue = deque() queue.append([x1, y1]) chess[x1][y1] = 1 dx = [-1, -2, -2, -1, 1, 2, 2, 1] dy = [-2, -1, 1, 2, 2, 1, -1, -2] while queue: qx, qy = queue..

알고리즘/백준 2022.02.03

백준 2606: 벽 부수고 이동하기 (Python)

https://www.acmicpc.net/problem/2206 2206번: 벽 부수고 이동하기 N×M의 행렬로 표현되는 맵이 있다. 맵에서 0은 이동할 수 있는 곳을 나타내고, 1은 이동할 수 없는 벽이 있는 곳을 나타낸다. 당신은 (1, 1)에서 (N, M)의 위치까지 이동하려 하는데, 이때 최단 경로 www.acmicpc.net from collections import deque n, m = map(int, input().split()) list = [[] for _ in range(n)] for i in range(n): data = input() for j in range(m): list[i].append(int(data[j])) def bfs(x, y, z): dx = [1, -1, 0, ..

알고리즘/백준 2022.02.03

백준 1697: 숨바꼭질 (Python)

https://www.acmicpc.net/problem/1697 1697번: 숨바꼭질 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 www.acmicpc.net from collections import deque MAX = 100000 n, k = map(int, input().split()) queue = deque() queue.append(n) visited = [0] * (MAX + 1) while queue: q = queue.popleft() mv = [q + 1, q - 1, 2 * q] if q == k: pri..

알고리즘/백준 2022.02.02

백준 7569: 토마토 (Python)

https://www.acmicpc.net/problem/7569 7569번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N과 쌓아올려지는 상자의 수를 나타내는 H가 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M ≤ 100, 2 ≤ N ≤ 100, www.acmicpc.net 7576번 문제의 3차원 버전이다 3차원이라는 것만 신경 써주고 똑같이 풀면 된다 pypy3로 제출함 from collections import deque m, n, h = map(int, input().split()) tomato = [[] for _ in range(h)] for i in range(h): for j in range(n): data = list(map(i..

알고리즘/백준 2022.02.02

백준 7576: 토마토 (Python)

https://www.acmicpc.net/problem/7576 7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토 www.acmicpc.net 미로 찾기랑 비슷한 문제다 처음엔 BFS를 동시에 돌려야 하나.....? 하고 혼자 엄청 고민했는데 그냥 큐에 있는 걸 전부 돌리기만 해도 된다는 걸 깨달음 맨 마지막 좌표에서 끝나는 것이 아니기 때문에 결과값은 최대값! 처음 시작을 1로 하기 때문에 결과값은 -1 해주기! from collections import deque m, n = map(int, input().split(..

알고리즘/백준 2022.02.02

백준 2178: 미로 탐색 (Python)

https://www.acmicpc.net/problem/2178 2178번: 미로 탐색 첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력으로 주어진다. www.acmicpc.net 이코테 교재에 있던 문제이기도 하고 어느 정도 그래프 탐색 문제에 익숙해져서 빠르게 풀었다 역시 사람은 복습이 중요하고 꾸준히 공부해야 한다,,, 이 문제 처음 풀었을 땐 답이 도무지 안 나왔는데 다시 푸니까 쉽게 풀림 from collections import deque n, m = map(int, input().split()) miro = [[] for _ in range(n)] for i in range(n): data =..

알고리즘/백준 2022.02.01

백준 1012: 유기농 배추 (Python)

https://www.acmicpc.net/problem/1012 1012번: 유기농 배추 차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에 www.acmicpc.net pypy3로 제출함. 드디어 dfs와 bfs가 익숙해졌따......! # dfs def dfs(x, y): if x = m or y = n: return False if list[y][x] == 1: list[y][x] = 0 dfs(x+1, y) dfs(x-1, y) dfs(x, y+1) dfs(x, y-1) return True else: return False t = ..

알고리즘/백준 2022.01.31