[PCCE 기출문제] 9번 / 이웃한 칸

정민교·2024년 4월 16일
0

📒문제

https://school.programmers.co.kr/learn/courses/30/lessons/250125



📒설명

2차원 격자판에서 한 위치를 입력받았을 때, 인접한 상하좌우의 칸이 입력받은 위치의 색과 동일한지를 묻는 문제이다.

동일한 색을 갖는 인접한 위치의 갯수를 세면 정답이다.

📒포인트

포인트라고 할 것도 없는 것이 이미 문제에서 어떻게 알고리즘을 짜라고 힌트를 주었다.

입력받은 위치에서 상하좌우를 살펴보고 해당 위치가 2차원 격자 안에 포함되는지를 1차로 살펴본다.

그러면 인덱스 범위 오류를 피할 수 있다.

격자 안에 포함되는 위치라면 입력받은 위치와 색이 같은지 확인하여 같다면 count를 하나 올려주면 된다.

📒코드

def in_range(h, w, height, width):
    return 0 <= h < height and 0 <= w < width

def solution(board, h, w):
    answer = 0
    dhs = [0, 1, -1, 0]
    dws = [1, 0, 0, -1]
    
    # 보드의 세로 가로 길이
    height, width = len(board), len(board[0])
    
    for dh, dw in zip(dhs, dws):
    	# 다음으로 살펴볼 위치(nh, nw)
        nh, nw = h + dh, w + dw
        # 범위에 포함 안된다면 볼 필요 없음
        if not in_range(nh, nw, height, width):
            continue
        # 범위에 포함되면 색 비교
        if board[nh][nw] == board[h][w]:
            answer += 1
            
    return answer

📒시간복잡도

O(1)

profile
백엔드 개발자

0개의 댓글