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
나의 코드
n, m, k = map(int, input().split())
arr = [[0]*m for _ in range(n)]
visited = [[0]*m for _ in range(n)]
for _ in range(k):
i, j = map(int, input().split())
arr[i-1][j-1] = 1
q = []
di = [0, 1, 0, -1]
dj = [1, 0, -1, 0]
max_size = 0
for i in range(n):
for j in range(m):
if arr[i][j] == 1 and visited[i][j] == 0: # 방문하지 않은 음식물쓰레기 있는 곳
q.append([i, j]) # 위치 저장
visited[i][j] = 1 # 방문표시
size = 1
while q:
x, y = q.pop(0)
for k in range(4):
ni = x+di[k]
nj = y+dj[k]
if 0 <= ni < n and 0 <= nj < m and arr[ni][nj] == 1 and visited[ni][nj] == 0:
q.append([ni, nj])
visited[ni][nj] = 1
size += 1
if max_size < size:
max_size = size
print(max_size)
결과

이게 무슨일이야?!!! 중간에 안 떠들었으면 진짜 10분 만에 풀었을 것 같은데?? 예전에 풀었던 단지번호붙이기랑 비슷한 문제라고 생각하고 그 때 풀었던 방식 생각해보면서 코드짰는데 바로 성공! 내일 시험 이렇게만 풀리면 너무 좋겠다~~~
'스터디 1일 1커밋' 카테고리의 다른 글
| 240414 [BOJ/백준] 4963. 섬의 개수 (0) | 2024.04.14 |
|---|---|
| 240411 [BOJ/백준] 14888. 연산자 끼워넣기 (0) | 2024.04.11 |
| 240410 [BOJ/백준] 18352. 특정 거리의 도시 찾기 (0) | 2024.04.10 |
| 240408 [BOJ/백준] 7576. 토마토 (0) | 2024.04.08 |
| 240408 [BOJ/백준] 6603. 로또 (0) | 2024.04.08 |