전체 글 108

[Boj/백준] 1303 Python

문제출처: https://www.acmicpc.net/problem/1303 1303번: 전쟁 - 전투 첫째 줄에는 전쟁터의 가로 크기 N, 세로 크기 M(1 ≤ N, M ≤ 100)이 주어진다. 그 다음 두 번째 줄에서 M+1번째 줄에는 각각 (X, Y)에 있는 병사들의 옷색이 띄어쓰기 없이 주어진다. 모든 자리에는 www.acmicpc.net 1. 문제 접근 방식 W와 B일때 경우를 나눠서 BFS를 돌리면 될 것 같았다. 한 개의 함수를 만들고 마지막 인자에 W와 B를 각각 넣어준다. 2. 내가 푼 코드 import sys from collections import deque dx = [-1, 1, 0, 0] dy = [0, 0, -1, 1] def bfs(x,y,color): queue = dequ..

[Boj문제풀이] 2021.09.27

[Boj/백준] 1743 Python

문제출처: https://www.acmicpc.net/problem/1743 1743번: 음식물 피하기 첫째 줄에 통로의 세로 길이 N(1 ≤ N ≤ 100)과 가로 길이 M(1 ≤ M ≤ 100) 그리고 음식물 쓰레기의 개수 K(1 ≤ K ≤ N×M)이 주어진다. 그리고 다음 K개의 줄에 음식물이 떨어진 좌표 (r, c)가 주어진다 www.acmicpc.net 1. 문제 접근 방식 bfs를 돌리면서 칸마다 count값을 증가시키고 반환한다. 반환값을 리스트에 붙이고 마지막으로 리스트 원소 중 가장 큰 값을 출력한다. 2. 내가 푼 코드 import sys from collections import deque dx = [-1, 1, 0, 0] dy = [0, 0, -1, 1] def bfs(x,y): q..

[Boj문제풀이] 2021.09.26

[Boj/백준] 3187 Python

문제출처: https://www.acmicpc.net/problem/3187 3187번: 양치기 꿍 입력의 첫 번째 줄에는 각각 영역의 세로와 가로의 길이를 나타내는 두 개의 정수 R, C (3 ≤ R, C ≤ 250)가 주어진다. 다음 각 R줄에는 C개의 문자가 주어지며 이들은 위에서 설명한 기호들이다. www.acmicpc.net 1. 문제 접근 방식 .을 기준으로 BFS를 돌리고 k를 만나면 k_count를 하나 증가시키고 v를 만나면 v_count를 하나 증가시킨 후에 0으로 바꿔준다. 2. 내가 푼 코드 import sys from collections import deque dx = [-1, 1, 0, 0] dy = [0, 0, -1, 1] def bfs(x,y,wolf,sheep): queu..

[Boj문제풀이] 2021.09.24

[Boj/백준] 14502 Python

문제출처: https://www.acmicpc.net/problem/14502 14502번: 연구소 인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 다행히 바이러스는 아직 퍼지지 않았고, 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다. 연구소는 크 www.acmicpc.net 1. 문제 접근 방식 처음에는 어떻게 할지 막막하다가 케이스가 적기때문에 브루트포스로 풀기로 했다. 0의 개수를 combination으로 받아 벽을 세울 수 있는 케이스의 개수를 구한다. for문을 순회하면서 2에 대해서 BFS를 수행한다. 2. 내가 푼 코드 import sys from collections import deque from itertools import combinations im..

[Boj문제풀이] 2021.09.23

[Boj/백준] 10026 Python

문제출처: https://www.acmicpc.net/problem/10026 10026번: 적록색약 적록색약은 빨간색과 초록색의 차이를 거의 느끼지 못한다. 따라서, 적록색약인 사람이 보는 그림은 아닌 사람이 보는 그림과는 좀 다를 수 있다. 크기가 N×N인 그리드의 각 칸에 R(빨강), G(초록) www.acmicpc.net 1. 문제 접근 방식 일반인은 R G B다르게 경우를 줘서 BFS로 돌렸고 적록색맹인은 R과 G는 R로 묶어서 B만 분리해서 BFS로 돌렸다. 이때 그래프를 두 개 생성하는데 두번째 그래프는 이중 for문을 돌면서 첫번째 그래프가 R이나 G일때 R로 초기화를 시켜줬다. 2. 내가 푼 코드 import sys from collections import deque dx = [-1, ..

[Boj문제풀이] 2021.09.23

[Boj/백준] 2583 Python

문제출처: https://www.acmicpc.net/problem/2583 2583번: 영역 구하기 첫째 줄에 M과 N, 그리고 K가 빈칸을 사이에 두고 차례로 주어진다. M, N, K는 모두 100 이하의 자연수이다. 둘째 줄부터 K개의 줄에는 한 줄에 하나씩 직사각형의 왼쪽 아래 꼭짓점의 x, y좌표값과 오 www.acmicpc.net 1. 문제 접근 방식 bfs로 풀기 위해 그래프를 숫자로 나타내려고 했고 0으로 초기화시킨 그래프에 직사각형 좌표에 따라서 1을 찍어줬다. 2. 내가 푼 코드 import sys from collections import deque def bfs(x,y): queue = deque() queue.append((x,y)) graph[x][y] = 1 cnt = 1 wh..

[Boj문제풀이] 2021.09.22

[Boj/백준] 14716 Python

문제출처: https://www.acmicpc.net/problem/14716 14716번: 현수막 혁진이의 생각대로 프로그램을 구현했을 때, 현수막에서 글자의 개수가 몇 개인지 출력하여라. www.acmicpc.net 1. 문제 접근 방식 여느 dfs 문제처럼 풀되 대각선도 가능함으로 dx와 dy를 8개씩 적어준다. 2. 내가 푼 코드 import sys sys.setrecursionlimit(100000) dx = [-1, -1, -1, 0, 0, 1, 1, 1] dy = [0, -1, 1, -1, 1, -1, 0, 1] def dfs(x,y): if x=n or y=m: return False if graph[x][y] == 1: graph[x][y] = 0 for i in range(8): dfs..

[Boj문제풀이] 2021.09.21

[Boj/백준] 2667 Python

문제출처: https://www.acmicpc.net/problem/2667 2667번: 단지번호붙이기 과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여 www.acmicpc.net 1. 문제 접근 방식 기존의 dfs방식대로 풀되 dfs 함수안에 global 변수를 선언해주고 graph[x][y] == 1일때마다 변수 값을 1씩 더해준다. 2. 내가 푼 코드 import sys n = int(sys.stdin.readline()) graph = [] for i in range(n): graph.append(list(map(int,sys.stdin.readline()...

[Boj문제풀이] 2021.09.21

[Boj/백준] 2644 Python

문제출처: https://www.acmicpc.net/problem/2644 2644번: 촌수계산 사람들은 1, 2, 3, …, n (1 ≤ n ≤ 100)의 연속된 번호로 각각 표시된다. 입력 파일의 첫째 줄에는 전체 사람의 수 n이 주어지고, 둘째 줄에는 촌수를 계산해야 하는 서로 다른 두 사람의 번호가 주어 www.acmicpc.net 1. 문제 접근 방식 dfs처럼 풀되 dfs 함수의 인자를 a, b, count로 두고 a의 인자를 재귀적으로 바꾸고 a==b가 성립하면 count값을 출력했다. 2. 내가 푼 코드 import sys n = int(sys.stdin.readline()) a, b = map(int,sys.stdin.readline().split()) m = int(sys.stdin...

[Boj문제풀이] 2021.09.20