코딩테스트

[프로그래머스] 이웃한 칸 - [PCCE 기출문제] 9번

pyflu 2023. 12. 11. 04:25

프로그래머스 250125번 문제"이웃한 칸" [PCCE 기출문제] 9번 - 파이썬, 자바

[프로그래머스] 이웃한 칸 [PCCE 기출문제] 9번 - [파이썬/python] [자바/java]

 

 

프로그래머스-이웃한-칸


💻 문제 설명

 

각 칸마다 색이 칠해진 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]는 영어 소문자로만 이루어져 있습니다.

 

 




!!!정답 주의!!!




 

 

 


🌟 소스 코드

[Python] 파이썬 코드

프로그래머스-이웃한-칸-파이썬-코드

def solution(board, h, w):
   
    count = 0 # board[h][w]와 이웃한 칸(상, 하, 좌, 우)들 중 같은 색의 수
    color = board[h][w] # board[h][w]의 색
   
    # 상, 하, 좌, 우
    directions = [[0, -1], [0, 1], [-1, 0], [1, 0]]
   
    # directions 순회 (상 -> 하 -> 좌 -> 우)
    for dir_h, dir_w in directions:
       
        # 이동할 인덱스 생성
        mov_h = h + dir_h
        mov_w = w + dir_w
       
        # 이동한 인덱스가 유효할 시
        if (0 <= mov_h <= len(board)-1) and (0 <= mov_w <= len(board[0])-1):
           
            # 이동한 칸의 색과 board[h][w]의 색이 같을 시 count += 1
            count += int(color == board[mov_h][mov_w])
       
    return count

 

 

 

[Java] 자바 코드

프로그래머스-이웃한-칸-자바-코드

class Solution {

    public int solution(String[][] board, int h, int w) {

 

        int count = 0; // board[h][w]와 이웃한 칸(상, 하, 좌, 우)들 중 같은 색의 수

        String color = board[h][w]; // board[h][w]의 색

 

        // 상, 하, 좌, 우

        int [][] directions = {{0, -1}, {0, 1}, {-1, 0}, {1, 0}};

 

        // directions 순회 (상 -> 하 -> 좌 -> 우)

        for (int [] dir : directions){

 

            // 이동할 인덱스 생성

            int mov_h = h + dir[0];

            int mov_w = w + dir[1];

 

            // 이동한 인덱스가 유효할 시

            if ((mov_h >= 0) && (mov_h < board.length) && (mov_w >= 0) && (mov_w < board[0].length)){

 

                // 이동한 칸의 색과 board[h][w]의 색이 같을 시 count += 1

                if (color.equals(board[mov_h][mov_w])){

                    count += 1;

                }

            }

        }

 

        return count;

    }

}

 

 


🏳‍🌈 테스트 결과

 

프로그래머스-이웃한-칸-상태

 

[Python] 파이썬 - 테스트 결과 [Java] 자바 - 테스트 결과
프로그래머스-이웃한-칸-파이썬-테스트-결과
프로그래머스-이웃한-칸-자바-테스트-결과
프로그래머스-이웃한-칸-파이썬-테스트-결과
프로그래머스-이웃한-칸-자바-테스트-결과
728x90