ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [๋ฐฑ์ค€] 14500 ํ…ŒํŠธ๋กœ๋ฏธ๋…ธ with Python
    PS 2022. 2. 2. 17:34
    728x90
    ๋ฐ˜์‘ํ˜•

    ๐Ÿ“Œ BOJ 14500 ํ…ŒํŠธ๋กœ๋ฏธ๋…ธ

    ๐Ÿ’ก ์กฐ๊ฑด

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

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

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

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

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

    6. S์˜ ๋ฌธ์ œ

    ๐Ÿ–ฅ ์†Œ์Šค ์ฝ”๋“œ

    from sys import stdin
    
    tetro = {
        # ใ…
        0: [[(0, 0), (0, 1), (1, 0), (1, 1)]],
        # ใ„ฑ,ใ„ด
        1: [[(0, 0), (0, 1), (0, 2), (-1, 0)], [(0, 0), (0, 1), (0, 2), (1, 0)], [(0, 0), (0, 1), (0, 2), (1, 2)],
            [(0, 0), (0, 1), (0, 2), (-1, 2)],
            [(0, 0), (-1, 0), (-2, 0), (0, 1)], [(0, 0), (-1, 0), (-2, 0), (0, -1)], [(0, 0), (1, 0), (2, 0), (0, -1)],
            [(0, 0), (1, 0), (2, 0), (0, 1)]],
        # ใ…ก, ใ…ฃ
        2: [[(0, 0), (0, 1), (0, 2), (0, 3)], [(0, 0), (1, 0), (2, 0), (3, 0)]],
        # ใ…—, ใ…“
        3: [[(0, 0), (1, -1), (1, 0), (1, 1)], [(0, 0), (-1, -1), (-1, 0), (-1, 1)],
            [(0, 0), (0, 1), (-1, 1), (1, 1)], [(0, 0), (0, -1), (-1, -1), (1, -1)]],
        # ใ„น - =
        4: [[(0, 0), (1, 0), (1, 1), (2, 1)], [(0, 0), (0, 1), (-1, 1), (-1, 2)],
            [(0, 0), (1, 0), (1, -1), (2, -1)], [(0, 0), (0, 1), (1, 1), (1, 2)]]
    }
    
    
    n, m = map(int, stdin.readline().split())
    board = []
    for _ in range(n):
        board.append(list(map(int, stdin.readline().split())))
    
    
    def get_value(x, y, blocks):
        global res
        for block in blocks:
            value = 0
            for i, j in block:
                nx, ny = i + x, j + y
                if -1 < nx < n and -1 < ny < m:
                    value += board[nx][ny]
                else:
                    break
    
            res = max(res, value)
    
    
    res = -int(1e9)
    for x in range(5):
        blocks = tetro[x]
        for i in range(n):
            for j in range(m):
                get_value(i, j, blocks)
    
    print(res)

    ๐Ÿ”– ์˜ˆ์ œ ๋ฐ ์‹คํ–‰๊ฒฐ๊ณผ

    ์˜ˆ์ œ

    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

    ์‹คํ–‰๊ฒฐ๊ณผ

    19

    โŒจ๏ธ ๋ฌธ์ œ ํ’€์ด

    1. ํ…ŒํŠธ๋กœ๋ฏธ๋…ธ๊ฐ€ ๋  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ขŒํ‘œ๋ฅผ tetro ๋ผ๋Š” ๋”•์…”๋„ˆ๋ฆฌ์— ์ €์žฅํ•œ๋‹ค.

    2. ์ข…์ด์˜ ํฌ๊ธฐ์™€ ์ข…์ด์— ์จ์žˆ๋Š” ์ˆซ์ž๋ฅผ ์ž…๋ ฅ๋ฐ›์•„ ๊ฐ ๋ณ€์ˆ˜ ๋ฐ ๋ฆฌ์ŠคํŠธ์— ์ €์žฅํ•œ๋‹ค.

    3. ๊ฐ ํ…ŒํŠธ๋กœ๋ฏธ๋…ธ๊ฐ€ ์œ„์น˜ํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ์–‘์— ๋Œ€ํ•ด์„œ ์ˆœํšŒํ•˜๋ฉด์„œ, ๊ฐ ์ขŒํ‘œ์—์„œ ๋†“์„ ์ˆ˜ ์žˆ๋Š” ํ…ŒํŠธ๋กœ๋ฏธ๋…ธ ๋ชจ์–‘์ด ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ๊ฐ’ ์ค‘ ์ตœ๋Œ“๊ฐ’์„ ๊ตฌํ•œ๋‹ค.
      ํ…ŒํŠธ๋กœ๋ฏธ๋…ธ์˜ ์ขŒํ‘œ๋Š” tetro ๋ผ๋Š” ๋ณ€์ˆ˜์—์„œ ์ด๋ฏธ ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ๊ธฐ์ค€์ด ๋˜๋Š” ์ขŒํ‘œ (i, j)์—์„œ ๋†“์„ ์ˆ˜ ์žˆ๋Š”์ง€ ์—†๋Š”์ง€๋„ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ๋‹ค.
      res ๋ผ๋Š” ๋ณ€์ˆ˜๊ฐ€ ์ตœ์ข…์ ์œผ๋กœ ๋‹ต์„ ์ถœ๋ ฅํ•  ๋ณ€์ˆ˜, value ๊ฐ€ ์ขŒํ‘œ (i, j) ์˜ ์œ„์น˜์—์„œ ๋†“์„ ์ˆ˜ ์žˆ๋Š” ํ…ŒํŠธ๋กœ๋ฏธ๋…ธ ๋ชจ์–‘์—์„œ์˜ ๊ฐ’์„ ์˜๋ฏธํ•œ๋‹ค.

    4. ๊ฐ ํ…ŒํŠธ๋กœ๋ฏธ๋…ธ, ์ขŒํ‘œ๊ฐ’์„ ์ˆœํšŒํ•˜๊ณ  ๊ฐฑ์‹ ํ•œ ๊ฐ’ ์ค‘ ์ตœ๋Œ“๊ฐ’์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” res ๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

    ๐Ÿ’พ ๋Š๋‚€์ 

    1. ํ…ŒํŠธ๋กœ๋ฏธ๋…ธ ๋ชจ์–‘์„ ์ผ์ผํžˆ ์ขŒํ‘œ๋กœ ์ •ํ•ด๋‘๊ณ  ํ’€์–ด์•ผํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ๋ชปํ–ˆ๋‹ค.
    2. (1)๋ฒˆ๊ณผ ๊ฐ™์€ ์ƒ๊ฐ์„ ํ•ด์•ผํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ์•„๋‹Œ, ์‹œ์ž‘์ ๋ถ€ํ„ฐ bfs๋กœ ํ…ŒํŠธ๋กœ๋ฏธ๋…ธ ๋ชจ์–‘์„ ๊ณ„์‚ฐํ•ด์„œ ํ’€์–ด์•ผํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค๊ฐ€ ํฐ ์ฝ” ๋‹ค์น ๋ป”ํ–ˆ๋‹ค.
    3. ํ…ŒํŠธ๋กœ๋ฏธ๋…ธ ๋ชจ์–‘์„ ์ขŒํ‘œ๋กœ ์ •ํ•ด๋‘๊ณ  ๋‚˜์„œ๋Š” ๊ทธ๋ฆฌ ์–ด๋ ค์šด ๋ฌธ์ œ๊ฐ€ ์•„๋‹ˆ์—ˆ๋‹ค.
    ๋ฐ˜์‘ํ˜•

    ๋Œ“๊ธ€

Designed by Tistory.