반응형
250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 파이썬
- 코딩
- 2022년 정보처리기사 실기 1회 가답안
- 자료구조
- 정보처리기사 실기 시험
- 백준 백트랙킹 파이썬
- 백준 토마토 파이썬
- 백준 N-Queens
- 알고리즘
- 백준
- 그리디
- 프로그래머스 파이썬
- it
- BOJ
- 프로그래밍
- 백준 백트랙킹
- 2022년 정보처리기사 실기 가답안
- 백준 그래프 이론 파이썬
- 토마토
- python
- 자바
- BFS
- 정보처리기사
- dfs
- 정보처리기사 실기
- 코딩테스트
- 백준 그래프 탐색 파이썬
- 코드
- 2022년 정보처리기사 실기
- 프로그래머스
Archives
- Today
- Total
코딩,안되면 될때까지
[백준 1012번-유기농 배추]-파이썬 본문
728x90
반응형
백준 1012번 파이썬풀이
<문제>
https://www.acmicpc.net/problem/1012
<풀이>-DFS알고리즘(재귀함수)사용!!!!
배추가 심어져있는곳은 1 심어져 있지 않은곳은 0이다.
그래프를 돌면서 배추가 심어져있는곳에서 DFS알고리즘을 적용한다.
해당위치에서 DFS알고리즘이 종료될때마다 count+=1을 해준다.
-DFS알고리즘 설명-
배추가 심어져 있는곳에서 상,하,좌,우 네가지 방향을 살핀다.
만약 네가지 방향중 배추가 심어져 있고 아직 방문하지 않은 경우(graph[x][y]=1,visitied[x][y]=False] 해당위치에서 dfs알고리즘을 호출한다.
※방문여부를 확인하는 두가지 방법※
1)밑의 코드 처럼 visited배열 사용
2)다음과 같이 dfs호출시 graph에서 해당 위치의 값을 -1로 변경
if graph[nx][ny]==1:
graph[nx][ny] = -1
dfs(nx,ny)
-주의점-
문제에서 배추가 심어져 있는곳의 위치를 입력받을때 열의 갯수와 y의 위치를 먼저 입력받게 되어있다.
따라서 그래프에 저장할경우 다음과 같이 저장해야한다.
m,n,k = map(int,input().split())
graph = [[0]*m for _ in range(n)]
for _ in range(k):
a,b = map(int,input().split())
graph[b][a] = 1
또한 재귀함수를 사용할때 다음과 같은 코드를 사용하지 않으면 런타임 에러가 발생할 수 있으니 참고하자.
import sys
sys.setrecursionlimit(10000)
<코드>-파이썬
import sys
sys.setrecursionlimit(10000)
def dfs(x,y):
dx = [-1,0,1,0]
dy = [0,-1,0,1]
visited[x][y] = True
for i in range(4):
nx = x+dx[i]
ny = y+dy[i]
if nx>=0 and ny>=0 and nx<n and ny<m:
if not visited[nx][ny] and graph[nx][ny]==1:
dfs(nx,ny)
T = int(input())
for _ in range(T):
m,n,k = map(int,input().split())
graph = [[0]*m for _ in range(n)]
visited = [[False]*m for _ in range(n)]
count = 0
for _ in range(k):
a,b = map(int,input().split())
graph[b][a] = 1
for i in range(n):
for j in range(m):
if graph[i][j] == 1 and not visited[i][j]:
dfs(i,j)
count+=1
print(count)
728x90
반응형
'백준 > 백준-파이썬' 카테고리의 다른 글
[백준 2468번-안전영역]-파이썬 (33) | 2022.03.13 |
---|---|
[백준 11724번-연결요소의 개수]-파이썬 (16) | 2022.03.12 |
[백준 2606번-바이러스]-파이썬 (24) | 2022.03.10 |
[백준 18405번 -경쟁적 전염]-파이썬 (0) | 2022.03.10 |
[백준-14502번-연구소] - 파이썬 (4) | 2022.03.08 |
Comments