๐Ÿ’ก Coding Test/Baekjoon Online Judge

[๋ฐฑ์ค€ ์‚ผ์„ฑ SW ์—ญ๋Ÿ‰ ํ…Œ์ŠคํŠธ ๊ธฐ์ถœ ๋ฌธ์ œ] 14500๋ฒˆ ํ…ŒํŠธ๋กœ๋ฏธ๋…ธ(Python/ํŒŒ์ด์ฌ)

soozkim 2023. 6. 8. 23:11

์‚ผ์„ฑ SW ์—ญ๋Ÿ‰ ํ…Œ์ŠคํŠธ ๊ธฐ์ถœ ๋ฌธ์ œ - 14500๋ฒˆ ํ…ŒํŠธ๋กœ๋ฏธ๋…ธ

 

14500๋ฒˆ: ํ…ŒํŠธ๋กœ๋ฏธ๋…ธ

ํด๋ฆฌ์˜ค๋ฏธ๋…ธ๋ž€ ํฌ๊ธฐ๊ฐ€ 1×1์ธ ์ •์‚ฌ๊ฐํ˜•์„ ์—ฌ๋Ÿฌ ๊ฐœ ์ด์–ด์„œ ๋ถ™์ธ ๋„ํ˜•์ด๋ฉฐ, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•ด์•ผ ํ•œ๋‹ค. ์ •์‚ฌ๊ฐํ˜•์€ ์„œ๋กœ ๊ฒน์น˜๋ฉด ์•ˆ ๋œ๋‹ค. ๋„ํ˜•์€ ๋ชจ๋‘ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์–ด์•ผ ํ•œ๋‹ค. ์ •์‚ฌ๊ฐํ˜•์˜ ๋ณ€

www.acmicpc.net

๋ฌธ์ œ

ํด๋ฆฌ์˜ค๋ฏธ๋…ธ๋ž€ ํฌ๊ธฐ๊ฐ€ 1×1์ธ ์ •์‚ฌ๊ฐํ˜•์„ ์—ฌ๋Ÿฌ ๊ฐœ ์ด์–ด์„œ ๋ถ™์ธ ๋„ํ˜•์ด๋ฉฐ, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•ด์•ผ ํ•œ๋‹ค.

  • ์ •์‚ฌ๊ฐํ˜•์€ ์„œ๋กœ ๊ฒน์น˜๋ฉด ์•ˆ ๋œ๋‹ค.
  • ๋„ํ˜•์€ ๋ชจ๋‘ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์–ด์•ผ ํ•œ๋‹ค.
  • ์ •์‚ฌ๊ฐํ˜•์˜ ๋ณ€๋ผ๋ฆฌ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์–ด์•ผ ํ•œ๋‹ค. ์ฆ‰, ๊ผญ์ง“์ ๊ณผ ๊ผญ์ง“์ ๋งŒ ๋งž๋‹ฟ์•„ ์žˆ์œผ๋ฉด ์•ˆ ๋œ๋‹ค.

์ •์‚ฌ๊ฐํ˜• 4๊ฐœ๋ฅผ ์ด์–ด ๋ถ™์ธ ํด๋ฆฌ์˜ค๋ฏธ๋…ธ๋Š” ํ…ŒํŠธ๋กœ๋ฏธ๋…ธ๋ผ๊ณ  ํ•˜๋ฉฐ, ๋‹ค์Œ๊ณผ ๊ฐ™์€ 5๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค.

์•„๋ฆ„์ด๋Š” ํฌ๊ธฐ๊ฐ€ N×M์ธ ์ข…์ด ์œ„์— ํ…ŒํŠธ๋กœ๋ฏธ๋…ธ ํ•˜๋‚˜๋ฅผ ๋†“์œผ๋ ค๊ณ  ํ•œ๋‹ค. ์ข…์ด๋Š” 1×1 ํฌ๊ธฐ์˜ ์นธ์œผ๋กœ ๋‚˜๋ˆ„์–ด์ ธ ์žˆ์œผ๋ฉฐ, ๊ฐ๊ฐ์˜ ์นธ์—๋Š” ์ •์ˆ˜๊ฐ€ ํ•˜๋‚˜ ์“ฐ์—ฌ ์žˆ๋‹ค.

ํ…ŒํŠธ๋กœ๋ฏธ๋…ธ ํ•˜๋‚˜๋ฅผ ์ ์ ˆํžˆ ๋†“์•„์„œ ํ…ŒํŠธ๋กœ๋ฏธ๋…ธ๊ฐ€ ๋†“์ธ ์นธ์— ์“ฐ์—ฌ ์žˆ๋Š” ์ˆ˜๋“ค์˜ ํ•ฉ์„ ์ตœ๋Œ€๋กœ ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

ํ…ŒํŠธ๋กœ๋ฏธ๋…ธ๋Š” ๋ฐ˜๋“œ์‹œ ํ•œ ์ •์‚ฌ๊ฐํ˜•์ด ์ •ํ™•ํžˆ ํ•˜๋‚˜์˜ ์นธ์„ ํฌํ•จํ•˜๋„๋ก ๋†“์•„์•ผ ํ•˜๋ฉฐ, ํšŒ์ „์ด๋‚˜ ๋Œ€์นญ์„ ์‹œ์ผœ๋„ ๋œ๋‹ค.\

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— ์ข…์ด์˜ ์„ธ๋กœ ํฌ๊ธฐ N๊ณผ ๊ฐ€๋กœ ํฌ๊ธฐ M์ด ์ฃผ์–ด์ง„๋‹ค. (4 ≤ N, M ≤ 500)

๋‘˜์งธ ์ค„๋ถ€ํ„ฐ N๊ฐœ์˜ ์ค„์— ์ข…์ด์— ์“ฐ์—ฌ ์žˆ๋Š” ์ˆ˜๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. i๋ฒˆ์งธ ์ค„์˜ j๋ฒˆ์งธ ์ˆ˜๋Š” ์œ„์—์„œ๋ถ€ํ„ฐ i๋ฒˆ์งธ ์นธ, ์™ผ์ชฝ์—์„œ๋ถ€ํ„ฐ j๋ฒˆ์งธ ์นธ์— ์“ฐ์—ฌ ์žˆ๋Š” ์ˆ˜์ด๋‹ค. ์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง€๋Š” ์ˆ˜๋Š” 1,000์„ ๋„˜์ง€ ์•Š๋Š” ์ž์—ฐ์ˆ˜์ด๋‹ค.

์ถœ๋ ฅ

์ฒซ์งธ ์ค„์— ํ…ŒํŠธ๋กœ๋ฏธ๋…ธ๊ฐ€ ๋†“์ธ ์นธ์— ์“ฐ์ธ ์ˆ˜๋“ค์˜ ํ•ฉ์˜ ์ตœ๋Œ“๊ฐ’์„ ์ถœ๋ ฅํ•œ๋‹ค.

์˜ˆ์ œ ์ž…๋ ฅ1

5 5
1 2 3 4 5
5 4 3 2 1
2 3 4 5 6
6 5 4 3 2
1 2 1 2 1

์˜ˆ์ œ ์ถœ๋ ฅ1

19

ํ’€์ด

- ํ…ŒํŠธ๋กœ๋ฏธ๋…ธ์˜ ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๋ฐฐ์—ด์— ๋‹ด์•„์ค€๋‹ค. ์ด 19๊ฐ€์ง€

- ํ…ŒํŠธ๋กœ๋ฏธ๋…ธ์˜ ์ˆ˜๋งŒํผ ๋ฐ˜๋ณต๋ฌธ์ด ๋Œ๊ณ , ๊ฐ ํ…ŒํŠธ๋กœ๋ฏธ๋…ธ์˜ ํ•ฉ์„ ๋น„๊ตํ•˜์—ฌ ํฐ ๊ฐ’์„ answer์— ๋„ฃ๋Š”๋‹ค.

- Pypy3์œผ๋กœ ์ œ์ถœํ•ด์•ผ ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋‚˜์ง€ ์•Š๋Š”๋‹ค

# 14500๋ฒˆ. ํ…ŒํŠธ๋กœ๋ฏธ๋…ธ
n, m = map(int, input().split())

# ๋ฐฉ๋ฒ• 1) ํ…ŒํŠธ๋กœ๋ฏธ๋…ธ ๋ชจ๋‘ ๊ตฌํ•ด์„œ ํ™•์ธํ•˜๊ธฐ - ๋‹จ, pypy3์œผ๋กœ ํ•ด์•ผ ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋‚˜์ง€ ์•Š์Œ

# ํ…ŒํŠธ๋กœ๋ฏธ๋…ธ์˜ ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๋ฐฐ์—ด์— ๋‹ด๋Š”๋‹ค
tetromino = [
    [[0, 0], [0, 1], [1, 0], [1, 1]],   # 1)
    [[0, 0], [0, 1], [0, 2], [0, 3]],   # 2)
    [[0, 0], [1, 0], [2, 0], [3, 0]],   # 3)
    [[0, 0], [0, 1], [0, 2], [-1, 2]],  # 4)
    [[0, 0], [1, 0], [2, 0], [2, 1]],   # 5)
    [[0, 0], [1, 0], [0, 1], [0, 2]],   # 6)
    [[0, 0], [0, 1], [1, 1], [2, 1]],   # 7)
    [[0, 0], [0, 1], [-1, 1], [-1, 2]], # 8)
    [[0, 0], [1, 0], [1, 1], [2, 1]],   # 9)
    [[0, 0], [0, 1], [0, 2], [-1, 1]],  # 10)
    [[0, 0], [1, 0], [2, 0], [1, 1]],   # 11)
    [[0, 0], [0, 1], [0, 2], [1, 1]],   # 12)
    [[0, 0], [0, 1], [-1, 1], [1, 1]],  # 13)
    [[0, 0], [0, 1], [1, 1], [1, 2]],   # 14)
    [[0, 0], [1, 0], [1, -1], [2, -1]], # 15)
    [[0, 0], [1, 0], [1, 1], [1, 2]],   # 16)
    [[0, 0], [0, 1], [1, 0], [2, 0]],   # 17)
    [[0, 0], [0, 1], [0, 2], [1, 2]],   # 18)
    [[0, 0], [1, 0], [2, 0], [2, -1]]  # 19)
]

paper = [list(map(int, input().split())) for _ in range(n)]
answer = 0

for x in range(n):
    for y in range(m):
        for t in range(0, 19): # ํ…ŒํŠธ๋กœ๋ฏธ๋…ธ์˜ ๊ฒฝ์šฐ์˜ ์ˆ˜ ๋งŒํผ
            sum = 0
            for i in range(4):
                nx = x + tetromino[t][i][0]
                ny = y + tetromino[t][i][1]
                if nx < 0 or nx >= n or ny < 0 or ny >= m:
                    break
                sum += paper[nx][ny]
            answer = max(answer, sum)

print(answer)

์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ถ„๋ฅ˜

๋”๋ณด๊ธฐ

- ๊ตฌํ˜„

- ๋ธŒ๋ฃจํŠธํฌ์Šค ์•Œ๊ณ ๋ฆฌ์ฆ˜

์ฐธ๊ณ ์‚ฌ์ดํŠธ

- DFS ์‚ฌ์šฉํ•˜์—ฌ ํ‘ผ ๋ฐฉ๋ฒ•๊ณผ ํŒŒ์ด์ฌ3์œผ๋กœ ์ œ์ถœํ•ด๋„ ์‹œ๊ฐ„์ดˆ๊ณผ ๋‚˜์ง€ ์•Š๋Š” ์ง์ ‘ ๋ชจ๋“  ํ…ŒํŠธ๋กœ๋ฏธ๋…ธ์˜ ํ•จ์ˆ˜๋ฅผ ๊ตฌํ˜„ํ•˜์—ฌ ํ‘ผ ๋ฐฉ๋ฒ•์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

[๋ฐฑ์ค€] 14500 ํ…ŒํŠธ๋กœ๋ฏธ๋…ธ (Python ํŒŒ์ด์ฌ)

https://www.acmicpc.net/problem/14500 14500๋ฒˆ: ํ…ŒํŠธ๋กœ๋ฏธ๋…ธ ํด๋ฆฌ์˜ค๋ฏธ๋…ธ๋ž€ ํฌ๊ธฐ๊ฐ€ 1×1์ธ ์ •์‚ฌ๊ฐํ˜•์„ ์—ฌ๋Ÿฌ ๊ฐœ ์ด์–ด์„œ ๋ถ™์ธ ๋„ํ˜•์ด๋ฉฐ, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•ด์•ผ ํ•œ๋‹ค. ์ •์‚ฌ๊ฐํ˜•์€ ์„œ๋กœ ๊ฒน์น˜๋ฉด ์•ˆ ๋œ๋‹ค. ๋„

hongcoding.tistory.com

 

728x90