728x90
문제설명
더보기
각 칸마다 색이 칠해진 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]는 영어 소문자로만 이루어져 있습니다.
입출력 예
문제풀이
- 이번 문제는 차후에 DFS 및 BFS 문제를 풀때 방향 탐색을 하는 기본의 틀을 공부해 볼 수 있는 문제이다. 색이 칠해져있는 board가 주어지고 좌표가 주어졌을때 해당 좌표의 주변의 색상을 확인하고 같은 색의 숫자를 리턴하는 것이다. 보통은 길을 찾을 때 해당 4방향 탐색을 진행하고 해당 위치에서 또 재귀나 반복문을 들어가는 것이 탐색의 기본이다.
- 첫번째 방법으로 풀고나서 다른사람들 풀이를 보고 가독성 면에서 안좋은 것 같아서 다시 작성해 보았다. 코드를 작성하면서 가독성을 높이는 코드를 작성하는것도 습관을 들이는 것이 필요한것 같다.
코드 & 설명
def solution(board, h, w):
answer = 0
dh = [0, 1, -1, 0]
dw = [1, 0, 0, -1]
for i in range(4):
if h+dh[i] >= 0 and h+dh[i] < len(board) and w+dw[i] >= 0 and w+dw[i] < len(board):
if board[h][w] == board[h+dh[i]][w+dw[i]]:
answer+=1
return answer
def solution(board, h, w):
answer = 0
dh = [1, -1, 0, 0]
dw = [0, 0, 1, -1]
color = board[h][w]
for i in range(4):
x = h + dh[i]
y = w + dw[i]
if 0 <= x < len(board) and 0 <= y < len(board):
if board[x][y] == color:
answer += 1
return answer
728x90
'CodeGym > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 햄버거 만들기 | 파이썬 (0) | 2024.05.20 |
---|---|
[프로그래머스] 숫자 변환하기 | 파이썬 (0) | 2024.05.10 |
[프로그래머스] 숫자 짝꿍 | 파이썬 (0) | 2024.05.09 |
[프로그래머스] 대충 만든 자판 | 파이썬 (0) | 2024.05.09 |
[프로그래머스] 둘만의 암호 | 파이썬 (0) | 2024.05.04 |