BOJ 1012 : 유기농 배추

유기농 배추 문제는 주어진 2차원 배열에서 적절한 카운트를 하는 문제인데, 기본적으로 해결책을 안다면 아주 쉽게, 잘 모른다고 해도 어 뭔가뭔가 이런게 필요한가? 싶은 유도를 생각 해 낼 수 있는 문제이다. 아이디어가 생각난다면 지금 당장 시도해보면 좋다.

https://www.acmicpc.net/problem/1012

 

 

 

다 괜찮았는데 한 가지가 걸림

for i in range(testCase):
    fieldX, fieldY, cabCount = list(map(int, input().split()))
    isVisited = [[False for _ in range(fieldY)] for _ in range(fieldX)]
    field = [[0 for _ in range(fieldY)] for _ in range(fieldX)]
    reqCount = 0
    
    for j in range(cabCount):
        cabX, cabY = list(map(int, input().split()))
        field[cabX][cabY] = 1

왜 2차원 배열에 선언 하는데 Y와 X가 뒤 바뀌어야 잘 작동되는지 의아했다.

파이썬 언어 특성, row로 저장되는 점 때문에 그런가보다 하기로 했다.

 

 

브프스 느므즈으 우끼끼

import sys
from collections import deque
input = sys.stdin.readline
q = deque()

dx = [1, -1, 0, 0]
dy = [0, 0, 1, -1]

testCase = int(input())
for i in range(testCase):
    fieldX, fieldY, cabCount = list(map(int, input().split()))
    isVisited = [[False for _ in range(fieldY)] for _ in range(fieldX)]
    field = [[0 for _ in range(fieldY)] for _ in range(fieldX)]
    reqCount = 0
    
    for j in range(cabCount):
        cabX, cabY = list(map(int, input().split()))
        field[cabX][cabY] = 1

    for j in range(fieldX):
        for k in range(fieldY):
            if(isVisited[j][k] == False and field[j][k] == 1):
                q.append([j, k])
                reqCount += 1 

            while(q):
                x, y = q.popleft()
                for l in range(4):
                    nx = x + dx[l]
                    ny = y + dy[l]
                    if(nx < 0 or nx >= fieldX or ny < 0 or ny >= fieldY):
                        continue

                    if(field[nx][ny] == 0):
                        continue

                    if(isVisited[nx][ny] == True):
                        continue
                    isVisited[nx][ny] = True
                    q.append([nx, ny])
    print(reqCount)

'문제풀이' 카테고리의 다른 글

BOJ 1475 : 방 번호  (0) 2025.05.15
BOJ 10026 : 적록색약  (0) 2025.05.14
BOJ 14891 : 톱니바퀴  (0) 2025.05.12
malloc LAB #3 : Explicit Free List  (0) 2025.04.28
malloc LAB #2 : Implicit Free List  (1) 2025.04.28