문제
문제 설명
각 칸마다 색이 칠해진 2차원 격자 보드판이 있습니다. 그중 한 칸을 골랐을 때, 위, 아래, 왼쪽, 오른쪽 칸 중 같은 색깔로 칠해진 칸의 개수를 구하려고 합니다. 보드의 각 칸에 칠해진 색깔 이름이 담긴 이차원 문자열 리스트 board와 고른 칸의 위치를 나타내는 두 정수 h, w가 주어질 때 board[h][w]와 이웃한 칸들 중 같은 색으로 칠해져 있는 칸의 개수를 return 하도록 solution 함수를 완성해 주세요. 이웃한 칸들 중 몇 개의 칸이 같은 색으로 색칠되어 있는지 확인하는 과정은 다음과 같습니다.
제한사항
1 ≤ board의 길이 ≤ 7
board의 길이와 board[n]의 길이는 동일합니다.
0 ≤ h, w < board의 길이
1 ≤ board[h][w]의 길이 ≤ 10
board[h][w]는 영어 소문자로만 이루어져 있습니다.
입출력 예시
첫번째 예시에서 주어진 보드를 나타내면 아래 그림과 같고, board[1][1]의 인접한 칸들은 화살표가 가리키는 칸들입니다. 따라서 board[1][1] 주변의 "red" 칸은 총 2개입니다.
두번째 예시에서 주어진 보드를 나타내면 아래 그림과 같고, board[0][1]의 인접한 칸들은 화살표가 가리키는 칸들입니다. 따라서 board[0][1] 주변의 "green"칸은 총 1개입니다.
solution
def solution(board, h, w):
dh = [0, 1, -1, 0]
dw = [1, 0, 0, -1]
answer = 0
for i in range(4):
if 0 <= h+dh[i] < len(board) and 0 <= w+dw[i] < len(board):
if board[h+dh[i]][w+dw[i]] == board[h][w]:
answer += 1
return answer
정말 쉬운 문제여서 3분만에 풀었다. 그럼에도 dfs를 푸는 기본 원칙 같은 형식이어서 한번 뇌를 풀어주는데 도움이 되었다.
dh, dw를 지정해두어 index를 for문을 통해 넘기면서 현재 지점에서 좌,우,상,하를 탐색할 수 있도록 한다.
또한 for문 안에 board의 범위를 벗어나지 않도록 하는 if문을 까먹지 않고 걸어줘야한다.
'Sketch (Programming Language) > Python' 카테고리의 다른 글
프로그래머스 - 최고의 집합 (0) | 2024.05.09 |
---|---|
프로그래머스 - 과일 장수 (1) | 2024.05.07 |
프로그래머스 - 추억 점수 (0) | 2024.05.04 |
프로그래머스 - 소수 만들기 (0) | 2024.05.02 |
Pandas(5) (0) | 2024.02.04 |