ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [๋ฐฑ์ค€] 1652 ๋ˆ„์šธ ์ž๋ฆฌ๋ฅผ ์ฐพ์•„๋ผ with Python
    PS 2023. 4. 3. 16:40
    728x90
    ๋ฐ˜์‘ํ˜•

    ๐Ÿ“Œ BOJ 1652 ๋ˆ„์šธ ์ž๋ฆฌ๋ฅผ ์ฐพ์•„๋ผ

    ๐Ÿ’ก ์กฐ๊ฑด

    1. ์ฝ”๋ ˆ์Šค์ฝ” ์ฝ˜๋„์— ์žˆ๋Š” ๋ฐฉ์€ NxN์˜ ์ •์‚ฌ๊ฐํ˜•๋ชจ์–‘์œผ๋กœ ์ƒ๊ฒผ๋‹ค.
      ๋ฐฉ ์•ˆ์—๋Š” ์˜ฎ๊ธธ ์ˆ˜ ์—†๋Š” ์ง๋“ค์ด ์ด๊ฒƒ์ €๊ฒƒ ๋งŽ์ด ์žˆ์–ด์„œ ์˜์‹์ด์˜ ๋ˆ„์šธ ์ž๋ฆฌ๋ฅผ ์ฐจ์ง€ํ•˜๊ณ  ์žˆ์—ˆ๋‹ค.

    2. ์˜์‹์ด๊ฐ€ ๋ˆ„์šธ ์ˆ˜ ์žˆ๋Š” ์ž๋ฆฌ์—๋Š” ์กฐ๊ฑด์ด ์žˆ๋‹ค.
      ๋˜‘๋ฐ”๋กœ ์—ฐ์†ํ•ด์„œ 2์นธ ์ด์ƒ์˜ ๋นˆ ์นธ์ด ์กด์žฌํ•˜๋ฉด ๊ทธ ๊ณณ์— ๋ชธ์„ ์–‘ ์˜†์œผ๋กœ ์ญ‰ ๋ป—์œผ๋ฉด์„œ ๋ˆ„์šธ ์ˆ˜ ์žˆ๋‹ค.
      ๊ฐ€๋กœ๋กœ ๋ˆ„์šธ ์ˆ˜๋„ ์žˆ๊ณ  ์„ธ๋กœ๋กœ ๋ˆ„์šธ ์ˆ˜๋„ ์žˆ๋‹ค.

    3. ๋ˆ„์šธ ๋•Œ๋Š” ๋ฌด์กฐ๊ฑด ๋ชธ์„ ์ญ‰ ๋ป—๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ˜๋“œ์‹œ ๋ฒฝ์ด๋‚˜ ์ง์— ๋‹ฟ๊ฒŒ ๋œ๋‹ค. (์ค‘๊ฐ„์— ์–ด์ •์ฉกํ•˜๊ฒŒ ๋ˆ•๋Š” ๊ฒฝ์šฐ๊ฐ€ ์—†๋‹ค.)

    4. ๋ฐฉ์˜ ํฌ๊ธฐ N๊ณผ ๋ฐฉ์˜ ๊ตฌ์กฐ๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ๊ฐ€๋กœ๋กœ ๋ˆ„์šธ ์ˆ˜ ์žˆ๋Š” ์ž๋ฆฌ์™€ ์„ธ๋กœ๋กœ ๋ˆ„์šธ ์ˆ˜ ์žˆ๋Š” ์ž๋ฆฌ์˜ ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ

    5. N์€ 1์ด์ƒ 100์ดํ•˜์˜ ์ •์ˆ˜์ด๋‹ค. '.'์€ ์•„๋ฌด๊ฒƒ๋„ ์—†๋Š” ๊ณณ์„ ์˜๋ฏธํ•˜๊ณ , 'X'๋Š” ์ง์ด ์žˆ๋Š” ๊ณณ์„ ์˜๋ฏธํ•œ๋‹ค.

    6. ๊ตฌํ˜„, ๋ฌธ์ž์—ด ์œ ํ˜•์˜ ๋ฌธ์ œ

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

    ์˜ˆ์ œ 1

    5
    ....X
    ..XX.
    .....
    .XX..
    X....

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

    5 4

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

    1. ๊ฐ€๋กœ, ์„ธ๋กœ๋กœ ๋ˆ„์šธ ์ˆ˜ ์žˆ๋Š” ์ž๋ฆฌ์— ๋Œ€ํ•œ ์ขŒํ‘œ๊ฐ’์„ ๋ฐฉ๋ฌธ์ฒ˜๋ฆฌ ๋ฆฌ์ŠคํŠธ์— ์ฒดํฌํ•˜์—ฌ ์—ฌ๋Ÿฌ๋ฒˆ ์นด์šดํŒ… ํ•˜์ง€ ์•Š๊ฒŒ ํ–ˆ๋‹ค.

    2. ์ด ๋ฌธ์ œ์—์„œ ์ค‘์š”ํ•˜๊ฒŒ ์ƒ๊ฐํ•ด์•ผํ•  ์ ์€, ๋ˆ„์šธ ๋•Œ๋Š” ๋ฌด์กฐ๊ฑด ๋ชธ์„ ์ญ‰ ๋ป—๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ˜๋“œ์‹œ ๋ฒฝ์ด๋‚˜ ์ง์— ๋‹ฟ๊ฒŒ ๋œ๋‹ค.
      ์ด๋‹ค.

    3. ๋ˆ„์šธ ์ˆ˜ ์žˆ๋Š” ์ž๋ฆฌ๋ฅผ ๋ฐฉ๋ฌธ์ฒ˜๋ฆฌ ๋ฆฌ์ŠคํŠธ์— ์ฒดํฌํ•  ๋•Œ, ์ง์ด ๋“ฑ์žฅํ•œ๋‹ค๋ฉด ๊ฑฐ๊ธฐ์„œ ๋ฐฉ๋ฌธ์ฒ˜๋ฆฌ๋ฅผ ๋ฉˆ์ถฐ์•ผํ•œ๋‹ค.

    4. (3)๋ฒˆ์ด ์ง€์ผœ์ง€์ง€ ์•Š์„ ๊ฒฝ์šฐ, ๊ทน์ดˆ๋ฐ˜ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์—์„œ ํ‹€๋ ธ์Šต๋‹ˆ๋‹ค ๊ฐ€ ๋‚˜์˜ฌ ๊ฒƒ์ด๋‹ค.

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

    from sys import stdin
    
    n = int(stdin.readline())
    board = []
    
    for _ in range(n):
        board.append(list(stdin.readline().rstrip()))
    g_v = [[1] * n for _ in range(n)]
    s_v = [[1] * n for _ in range(n)]
    g, s = 0, 0
    
    
    def check(x, y, mode):
        global g, s
    
        if mode == 1:
            if board[x][y] == board[x][y + 1] and (g_v[x][y] == 1 and g_v[x][y + 1] == 1):
                g += 1
                for j in range(y, n):
                    if board[x][j] == 'X':
                        break
                    g_v[x][j] = 0
                for j in range(y, -1, -1):
                    if board[x][j] == 'X':
                        break
                    g_v[x][j] = 0
    
        elif mode == 2:
            if board[x][y] == board[x + 1][y] and (s_v[x][y] == 1 and s_v[x + 1][y] == 1):
                s += 1
                for i in range(x, n):
                    if board[i][y] == 'X':
                        break
                    s_v[i][y] = 0
    
                for i in range(x, -1, -1):
                    if board[i][y] == 'X':
                        break
                    s_v[i][y] = 0
    
    
    for i in range(n):
        for j in range(n):
            if board[i][j] == '.':
                if j + 1 < n:
                    check(i, j, 1)
    
                if i + 1 < n:
                    check(i, j, 2)
    
    print(g, s)
    ๋ฐ˜์‘ํ˜•

    ๋Œ“๊ธ€

Designed by Tistory.