๐Ÿ–ฅ๏ธ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ/Python

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] [Python] [PCCE ๊ธฐ์ถœ๋ฌธ์ œ] 9๋ฒˆ / ์ด์›ƒํ•œ ์นธ

rtw0202 2025. 10. 28. 10:48

1. ๋ฌธ์ œ ์„ค๋ช…

๊ฐ ์นธ๋งˆ๋‹ค ์ƒ‰์ด ์น ํ•ด์ง„ 2์ฐจ์› ๊ฒฉ์ž ๋ณด๋“œํŒ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ์ค‘ ํ•œ ์นธ์„ ๊ณจ๋ž์„ ๋•Œ, ์œ„, ์•„๋ž˜, ์™ผ์ชฝ, ์˜ค๋ฅธ์ชฝ ์นธ ์ค‘ ๊ฐ™์€ ์ƒ‰๊น”๋กœ ์น ํ•ด์ง„ ์นธ์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

๋ณด๋“œ์˜ ๊ฐ ์นธ์— ์น ํ•ด์ง„ ์ƒ‰๊น” ์ด๋ฆ„์ด ๋‹ด๊ธด ์ด์ฐจ์› ๋ฌธ์ž์—ด ๋ฆฌ์ŠคํŠธ board์™€ ๊ณ ๋ฅธ ์นธ์˜ ์œ„์น˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋‘ ์ •์ˆ˜ h, w๊ฐ€ ์ฃผ์–ด์งˆ ๋•Œ, board[h][w]์™€ ์ด์›ƒํ•œ ์นธ๋“ค ์ค‘ ๊ฐ™์€ ์ƒ‰์œผ๋กœ ์น ํ•ด์ ธ ์žˆ๋Š” ์นธ์˜ ๊ฐœ์ˆ˜๋ฅผ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด ์ฃผ์„ธ์š”.

์ด์›ƒํ•œ ์นธ๋“ค ์ค‘ ๋ช‡ ๊ฐœ์˜ ์นธ์ด ๊ฐ™์€ ์ƒ‰์œผ๋กœ ์ƒ‰์น ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ณผ์ •์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

1. ์ •์ˆ˜๋ฅผ ์ €์žฅํ•  ๋ณ€์ˆ˜ n์„ ๋งŒ๋“ค๊ณ  board์˜ ๊ธธ์ด๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
2. ๊ฐ™์€ ์ƒ‰์œผ๋กœ ์ƒ‰์น ๋œ ์นธ์˜ ๊ฐœ์ˆ˜๋ฅผ ์ €์žฅํ•  ๋ณ€์ˆ˜ count๋ฅผ ๋งŒ๋“ค๊ณ  0์„ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
3. h์™€ w์˜ ๋ณ€ํ™”๋Ÿ‰์„ ์ €์žฅํ•  ์ •์ˆ˜ ๋ฆฌ์ŠคํŠธ dh, dw๋ฅผ ๋งŒ๋“ค๊ณ  ๊ฐ๊ฐ [0, 1, -1, 0], [1, 0, 0, -1]์„ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
4. ๋ฐ˜๋ณต๋ฌธ์„ ์ด์šฉํ•ด i ๊ฐ’์„ 0๋ถ€ํ„ฐ 3๊นŒ์ง€ 1 ์”ฉ ์ฆ๊ฐ€์‹œํ‚ค๋ฉฐ ์•„๋ž˜ ์ž‘์—…์„ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค.
    4-1. ์ฒดํฌํ•  ์นธ์˜ h, w ์ขŒํ‘œ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋ณ€์ˆ˜ h_check, w_check๋ฅผ ๋งŒ๋“ค๊ณ  ๊ฐ๊ฐ h + dh[i], w + dw[i]๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
    4-2. h_check๊ฐ€ 0 ์ด์ƒ n ๋ฏธ๋งŒ์ด๊ณ  w_check๊ฐ€ 0 ์ด์ƒ n ๋ฏธ๋งŒ์ด๋ผ๋ฉด ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
        4-2-a. board[h][w]์™€ board[h_check][w_check]์˜ ๊ฐ’์ด ๋™์ผํ•˜๋‹ค๋ฉด count์˜ ๊ฐ’์„ 1 ์ฆ๊ฐ€์‹œํ‚ต๋‹ˆ๋‹ค.
5. count์˜ ๊ฐ’์„ returnํ•ฉ๋‹ˆ๋‹ค.
  • ์œ„์˜ ์˜์‚ฌ์ฝ”๋“œ์™€ ์ž‘๋™๋ฐฉ์‹์ด ๋‹ค๋ฅธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด๋„ ์ƒ๊ด€์—†์Šต๋‹ˆ๋‹ค.

์ œํ•œ์‚ฌํ•ญ

  • 1 ≤ board์˜ ๊ธธ์ด ≤ 7
    • board์™€ board[n]์˜ ๊ธธ์ด๋Š” ๋™์ผํ•ฉ๋‹ˆ๋‹ค.
  • 0 ≤ h, w < borad์˜ ๊ธธ์ด
  • 1 ≤ board[h][w]์˜ ๊ธธ์ด ≤ 10
    • board[h][w]๋Š” ์˜์–ด ์†Œ๋ฌธ์ž๋กœ๋งŒ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.

 

2. ์ถœ๋ ฅ ์˜ˆ์‹œ

 

3. ๋ฌธ์ œ ๋‹ต์•ˆ

def solution(board, h, w):
    n = len(board)
    count = 0
    dh, dw = [0, 1, -1, 0], [1, 0, 0, -1] # ์˜ค๋ฅธ์ชฝ, ์•„๋ž˜, ์œ„, ์™ผ์ชฝ ๋ณ€ํ™”๋Ÿ‰
    for i in range(4): # 0~3
        h_check, w_check = h + dh[i], w + dw[i] # ์˜ค๋ฅธ์ชฝ, ์•„๋ž˜, ์œ„, ์™ผ์ชฝ ์œ„์น˜
        if h_check >= 0 and h_check < n and w_check >= 0 and w_check < n:
            if board[h][w]==board[h_check][w_check]:
                count += 1
    return count