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

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] [Python] [PCCE ๊ธฐ์ถœ๋ฌธ์ œ] 10๋ฒˆ / ๊ณต์›

rtw0202 2025. 10. 28. 10:51

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

์ง€๋ฏผ์ด๋Š” ๋‹ค์–‘ํ•œ ํฌ๊ธฐ์˜ ์ •์‚ฌ๊ฐํ˜• ๋ชจ์–‘ ๋—์ž๋ฆฌ๋ฅผ ๊ฐ€์ง€๊ณ  ๊ณต์›์— ์†Œํ’์„ ๋‚˜์™”์Šต๋‹ˆ๋‹ค. ๊ณต์›์—๋Š” ์ด๋ฏธ ๋—์ž๋ฆฌ๋ฅผ ๊น”๊ณ  ์—ฌ๊ฐ€๋ฅผ ์ฆ๊ธฐ๋Š” ์‚ฌ๋žŒ๋“ค์ด ๋งŽ์•„ ์ง€๋ฏผ์ด๊ฐ€ ๊น” ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ํฐ ๋—์ž๋ฆฌ๊ฐ€ ์–ด๋–ค ๊ฑด์ง€ ํ™•์ธํ•˜๋ ค ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ง€๋ฏผ์ด๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋—์ž๋ฆฌ์˜ ํ•œ ๋ณ€ ๊ธธ์ด๊ฐ€ 5, 3, 2 ์„ธ ์ข…๋ฅ˜์ด๊ณ , ์‚ฌ๋žŒ๋“ค์ด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์•‰์•„ ์žˆ๋‹ค๋ฉด ์ง€๋ฏผ์ด๊ฐ€ ๊น” ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ํฐ ๋—์ž๋ฆฌ๋Š” 3x3 ํฌ๊ธฐ์ž…๋‹ˆ๋‹ค.

์ง€๋ฏผ์ด๊ฐ€ ๊ฐ€์ง„ ๋—์ž๋ฆฌ๋“ค์˜ ํ•œ ๋ณ€์˜ ๊ธธ์ด๋“ค์ด ๋‹ด๊ธด ์ •์ˆ˜ ๋ฆฌ์ŠคํŠธ mats, ํ˜„์žฌ ๊ณต์›์˜ ์ž๋ฆฌ ๋ฐฐ์น˜๋„๋ฅผ ์˜๋ฏธํ•˜๋Š” 2์ฐจ์› ๋ฌธ์ž์—ด ๋ฆฌ์ŠคํŠธ park๊ฐ€ ์ฃผ์–ด์งˆ ๋•Œ ์ง€๋ฏผ์ด๊ฐ€ ๊น” ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ํฐ ๋—์ž๋ฆฌ์˜ ํ•œ ๋ณ€ ๊ธธ์ด๋ฅผ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด ์ฃผ์„ธ์š”. ์•„๋ฌด๋Ÿฐ ๋—์ž๋ฆฌ๋„ ๊น” ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ -1์„ returnํ•ฉ๋‹ˆ๋‹ค.

์ œํ•œ์‚ฌํ•ญ

  • 1 ≤ mats์˜ ๊ธธ์ด ≤ 10
    • 1 ≤ mats์˜ ์›์†Œ ≤ 20
    • mats๋Š” ์ค‘๋ณต๋œ ์›์†Œ๋ฅผ ๊ฐ€์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • 1 ≤ park์˜ ๊ธธ์ด ≤ 50
    • 1 ≤ park[i]์˜ ๊ธธ์ด ≤ 50
    • park[i][j]์˜ ์›์†Œ๋Š” ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค.
    • park[i][j]์— ๋—์ž๋ฆฌ๋ฅผ ๊น ์‚ฌ๋žŒ์ด ์—†๋‹ค๋ฉด "-1", ์‚ฌ๋žŒ์ด ์žˆ๋‹ค๋ฉด ์•ŒํŒŒ๋ฒณ ํ•œ ๊ธ€์ž๋กœ ๋œ ๊ฐ’์„ ๊ฐ–์Šต๋‹ˆ๋‹ค.

 

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

 

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

def solution(mats, park):
    answer = 0
    m = len(park[0])
    n = len(park)
    size = [[0] * m for _ in range(n)] # 2์ฐจ์› ๋ฆฌ์ŠคํŠธ ์ดˆ๊ธฐํ™”
    max_size = 0
    
    for i in range(0, n): # 0~5
        for j in range(0, m): # 0~7
            if park[i][j] == "-1":  # ๋นˆ ์ž๋ฆฌ
                if i == 0 or j == 0: # ์ฒซ ํ–‰ ๋˜๋Š” ์ฒซ ์—ด์ธ ๊ฒฝ์šฐ
                    size[i][j] = 1 # ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ์ •์‚ฌ๊ฐํ˜• ํฌ๊ธฐ
                else: # ์ตœ์†Œ๊ฐ’์„ ์ฐพ์•„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ์ •์‚ฌ๊ฐํ˜• ํฌ๊ธฐ ๊ณ„์‚ฐ
                    size[i][j] = min(size[i-1][j], size[i][j-1], size[i-1][j-1]) + 1
    max_size = max(map(max, size)) # ์ตœ๋Œ“๊ฐ’ ์ฐพ๊ธฐ
                    
    mats.sort(reverse=True) # ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ
    for m in mats: # 5, 3, 2
        if m <= max_size:
            answer = m
            return answer
    return -1