Skip to content

Commit 82ef0a7

Browse files
committed
[level 1] Title: [PCCE 기출문제] 9번 / 이웃한 칸, Time: 0.01 ms, Memory: 9.16 MB -BaekjoonHub
1 parent 07ba62b commit 82ef0a7

File tree

2 files changed

+133
-0
lines changed

2 files changed

+133
-0
lines changed
Lines changed: 120 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,120 @@
1+
# [level 1] [PCCE 기출문제] 9번 / 이웃한 칸 - 250125
2+
3+
[문제 링크](https://school.programmers.co.kr/learn/courses/30/lessons/250125)
4+
5+
### 성능 요약
6+
7+
메모리: 9.16 MB, 시간: 0.01 ms
8+
9+
### 구분
10+
11+
코딩테스트 연습 > PCCE 기출문제
12+
13+
### 채점결과
14+
15+
정확성: 100.0<br/>합계: 100.0 / 100.0
16+
17+
### 제출 일자
18+
19+
2026년 01월 09일 17:06:00
20+
21+
### 문제 설명
22+
23+
<p>각 칸마다 색이 칠해진 2차원 격자 보드판이 있습니다. 그중 한 칸을 골랐을 때, 위, 아래, 왼쪽, 오른쪽 칸 중 같은 색깔로 칠해진 칸의 개수를 구하려고 합니다.</p>
24+
25+
<p>보드의 각 칸에 칠해진 색깔 이름이 담긴 이차원 문자열 리스트 <code>board</code>와 고른 칸의 위치를 나타내는 두 정수 <code>h</code>, <code>w</code>가 주어질 때 <code>board[h][w]</code>와 이웃한 칸들 중 같은 색으로 칠해져 있는 칸의 개수를 return 하도록 solution 함수를 완성해 주세요.</p>
26+
27+
<p>이웃한 칸들 중 몇 개의 칸이 같은 색으로 색칠되어 있는지 확인하는 과정은 다음과 같습니다.</p>
28+
<div class="highlight"><pre class="codehilite"><code>1. 정수를 저장할 변수 n을 만들고 board의 길이를 저장합니다.
29+
2. 같은 색으로 색칠된 칸의 개수를 저장할 변수 count를 만들고 0을 저장합니다.
30+
3. h와 w의 변화량을 저장할 정수 리스트 dh, dw를 만들고 각각 [0, 1, -1, 0], [1, 0, 0, -1]을 저장합니다.
31+
4. 반복문을 이용해 i 값을 0부터 3까지 1 씩 증가시키며 아래 작업을 반복합니다.
32+
4-1. 체크할 칸의 h, w 좌표를 나타내는 변수 h_check, w_check를 만들고 각각 h + dh[i], w + dw[i]를 저장합니다.
33+
4-2. h_check가 0 이상 n 미만이고 w_check가 0 이상 n 미만이라면 다음을 수행합니다.
34+
4-2-a. board[h][w]와 board[h_check][w_check]의 값이 동일하다면 count의 값을 1 증가시킵니다.
35+
5. count의 값을 return합니다.
36+
</code></pre></div>
37+
<ul>
38+
<li>위의 의사코드와 작동방식이 다른 코드를 작성해도 상관없습니다.</li>
39+
</ul>
40+
41+
<hr>
42+
43+
<h4>제한사항</h4>
44+
45+
<ul>
46+
<li>1 ≤ <code>board</code>의 길이 ≤ 7
47+
48+
<ul>
49+
<li><code>board</code>의 길이와 <code>board[n]</code>의 길이는 동일합니다.</li>
50+
</ul></li>
51+
<li>0 ≤ <code>h</code>, <code>w</code> &lt; <code>board</code>의 길이</li>
52+
<li>1 ≤ <code>board[h][w]</code>의 길이 ≤ 10
53+
54+
<ul>
55+
<li><code>board[h][w]</code>는 영어 소문자로만 이루어져 있습니다.</li>
56+
</ul></li>
57+
</ul>
58+
59+
<hr>
60+
61+
<h4>입출력 예</h4>
62+
<table class="table">
63+
<thead><tr>
64+
<th>board</th>
65+
<th>h</th>
66+
<th>w</th>
67+
<th>result</th>
68+
</tr>
69+
</thead>
70+
<tbody><tr>
71+
<td>[["blue", "red", "orange", "red"], ["red", "red", "blue", "orange"], ["blue", "orange", "red", "red"], ["orange", "orange", "red", "blue"]]</td>
72+
<td>1</td>
73+
<td>1</td>
74+
<td>2</td>
75+
</tr>
76+
<tr>
77+
<td>[["yellow", "green", "blue"], ["blue", "green", "yellow"], ["yellow", "blue", "blue"]]</td>
78+
<td>0</td>
79+
<td>1</td>
80+
<td>1</td>
81+
</tr>
82+
</tbody>
83+
</table>
84+
<hr>
85+
86+
<h4>입출력 예 설명</h4>
87+
88+
<p>입출력 예 #1</p>
89+
90+
<ul>
91+
<li>주어진 보드를 나타내면 아래 그림과 같고, <code>board[1][1]</code>의 인접한 칸들은 화살표가 가리키는 칸들입니다. 따라서 <code>board[1][1]</code> 주변의 "red" 칸은 총 2개입니다.</li>
92+
</ul>
93+
94+
<p><img src="https://grepp-programmers.s3.ap-northeast-2.amazonaws.com/files/production/cb8c0433-a307-4184-b224-6185c87dfc07/9-1.jpg" title="" alt="9-1.jpg"></p>
95+
96+
<p>입출력 예 #2</p>
97+
98+
<ul>
99+
<li>주어진 보드를 나타내면 아래 그림과 같고, <code>board[0][1]</code>의 인접한 칸들은 화살표가 가리키는 칸들입니다. 따라서 <code>board[0][1]</code> 주변의 "green"칸은 총 1개입니다.</li>
100+
</ul>
101+
102+
<p><img src="https://grepp-programmers.s3.ap-northeast-2.amazonaws.com/files/production/a9fdec91-df64-4240-82b3-c63d9555e689/9-2.jpg" title="" alt="9-2.jpg"></p>
103+
104+
<hr>
105+
106+
<ul>
107+
<li>cpp를 응시하는 경우 리스트는 배열과 동일한 의미이니 풀이에 참고해주세요.
108+
109+
<ul>
110+
<li>ex) 번호가 담긴 정수 <u><strong>리스트</strong></u> <code>numbers</code>가 주어집니다. =&gt; 번호가 담긴 정수 <u><strong>배열</strong></u> <code>numbers</code>가 주어집니다.</li>
111+
</ul></li>
112+
<li>java를 응시하는 경우 리스트는 배열, 함수는 메소드와 동일한 의미이니 풀이에 참고해주세요.
113+
114+
<ul>
115+
<li>ex) solution <u><strong>함수</strong></u>가 올바르게 작동하도록 한 줄을 수정해 주세요. =&gt; solution <u><strong>메소드</strong></u>가 올바르게 작동하도록 한 줄을 수정해 주세요.</li>
116+
</ul></li>
117+
</ul>
118+
119+
120+
> 출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
def solution(board, h, w):
2+
cnt = 0
3+
n = len(board)
4+
dx = [-1, 1, 0, 0]
5+
dy = [0, 0, 1, -1]
6+
7+
for i in range(4):
8+
nx = h + dx[i]
9+
ny = w + dy[i]
10+
11+
if 0 <= nx < n and 0 <= ny < n and board[h][w] == board[nx][ny]:
12+
cnt += 1
13+
return cnt

0 commit comments

Comments
 (0)