J1Yun
ZU-TECHLOG
J1Yun
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๐Ÿ“‘ Category (135)
    • Algorithm (61)
      • ๐Ÿ“š Concept (6)
      • ๐Ÿ“˜ Baekjoon Judge (53)
      • ๐Ÿ“— Programmers (2)
    • Computer Science (42)
      • ๐Ÿ”’ Operating System (14)
      • ๐Ÿ“ก Network (15)
      • ๐Ÿ’พ Database (8)
      • ๐Ÿงฉ Design Pattern (4)
      • ๐Ÿ”‘ Security (1)
    • Activities (12)
      • ๐Ÿฆ ๋ฉ‹์Ÿ์ด์‚ฌ์ž์ฒ˜๋Ÿผ 9๊ธฐ (6)
      • ๐Ÿ’ป SW๋งˆ์—์ŠคํŠธ๋กœ 13๊ธฐ (6)
    • Infra (1)
      • โ˜๏ธ AWS (1)
    • Languages (1)
      • ๐Ÿ’™ Python (1)
    • Backend (7)
      • ๐Ÿ”ต Django (4)
      • ๐ŸŸข Node.js (3)
    • Ect. (8)
      • ๐Ÿ’ฌ Talk (0)
      • ๐Ÿ—‚๏ธ ๊ฐœ๋ฐœ์ง๊ตฐ ์ทจ์—… ์ค€๋น„์ž๋ฃŒ (8)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ
  • ํƒœ๊ทธ
  • ๋ฐฉ๋ช…๋ก

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ

250x250
hELLO ยท Designed By ์ •์ƒ์šฐ.
J1Yun

ZU-TECHLOG

[BOJ] ๋ฐฑ์ค€ 14500๋ฒˆ ํ…ŒํŠธ๋กœ๋ฏธ๋…ธ - ํŒŒ์ด์ฌ(Python)
Algorithm/๐Ÿ“˜ Baekjoon Judge

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

728x90

๋ฌธ์ œ

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

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

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

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

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

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

์ž…๋ ฅ

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

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

์ถœ๋ ฅ

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

 

https://www.acmicpc.net/problem/14500

 

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

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

www.acmicpc.net

 

๐Ÿ’ก ํ’€์ด ๋ฐ ์ฝ”๋“œ

data = []
n, m = map(int, input().split())
for _ in range(n):
    data.append(list(map(int, input().split())))
    
dx, dy = [-1, 1, 0], [0, 0, 1]
max_num = 0
def dfs(x, y, s, t, check):
    if t == 4:
        global max_num
        max_num = max(max_num, s)
        return
    for i in range(3):
        nx = x + dx[i]
        ny = y + dy[i]
        if nx < 0 or nx >= n or ny < 0 or ny >= m or (nx, ny) in check:
            continue
        if t == 3:
            if check[0][1]==check[1][1]==check[2][1]:
                for j in [-1, 1]:
                    check_y = check[1][1] + j
                    if check_y < 0 or check_y >= m:
                        continue
                    dfs(check[1][0], check_y, s + data[check[1][0]][check_y], t + 1, check + [(check[1][0], check_y)])
            elif check[0][0]==check[1][0]==check[2][0]:
                for j in [-1, 1]:
                    check_x = check[1][0] + j
                    if check_x < 0 or check_x >= n:
                        continue
                    dfs(check_x, check[1][1], s + data[check_x][check[1][1]], t + 1, check + [(check_x, check[1][1])])
        dfs(nx, ny, s + data[nx][ny], t + 1, check + [(nx, ny)])
        
for i in range(n):
    for j in range(m):
        dfs(i, j, data[i][j], 1, [(i, j)])
print(max_num)

DFS๋ฅผ ํ™œ์šฉํ•œ ๋ฐฑํŠธ๋ž˜ํ‚น ๊ธฐ๋ฒ•์œผ๋กœ ํ’€์ดํ–ˆ๋‹ค. ์‹œ๊ฐ„์ดˆ๊ณผ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์™ผ์ชฝ ์ขŒํ‘œ ํƒ์ƒ‰(y-1์ขŒํ‘œ)์€ ์ œ์™ธ์‹œ์ผฐ๋‹ค. ํ•ญ์ƒ ์ค‘๋ณต ํƒ์ƒ‰์ด ๋ฐœ์ƒํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์™ผ์ชฝ ์ขŒํ‘œ ํƒ์ƒ‰์„ ์ œ์™ธ์‹œ์ผœ๋„ ๊ฒฝ์šฐ์— ๋”ฐ๋ผ ์ค‘๋ณต ํƒ์ƒ‰์ด ๋ฐœ์ƒํ•˜๊ธด ํ•˜์ง€๋งŒ ์ œ์ถœ ์‹œ ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์•„ ๊ณ ๋ คํ•˜์ง€ ์•Š์•˜๋‹ค. ์ž…๋ ฅ๋ฐ›์€ ๋ฐ์ดํ„ฐ์˜ ๊ฐ ์ขŒํ‘œ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ƒ, ํ•˜, ์šฐ ๋ฐฉํ–ฅ์„ ํƒ์ƒ‰ํ•˜๋ฉฐ 4๊ฐœ์˜ ์ขŒํ‘œ ์กฐํ•ฉ์„ ๋งŒ๋“ค์–ด ์ขŒํ‘œ ๊ฐ’์˜ ํ•ฉ์„ ๊ตฌํ–ˆ๊ณ , ๊ทธ ์ค‘ ์ตœ๋Œ“๊ฐ’์„ ์ „์—ญ๋ณ€์ˆ˜์— ์ €์žฅํ–ˆ๋‹ค.

๋‹จ, ์œ„์™€ ๊ฐ™์€ ๋ชจ์–‘์˜ ํ…ŒํŠธ๋กœ๋ฏธ๋…ธ๋Š” DFS ๋ฐฑํŠธ๋ž˜ํ‚น์œผ๋กœ ํƒ์ƒ‰ํ•  ์ˆ˜ ์—†๋Š” ์˜ˆ์™ธ ์ƒํ™ฉ์ด๋‹ค. ๋”ฐ๋ผ์„œ, ํƒ์ƒ‰ํ•œ ์ขŒํ‘œ๊ฐ€ ์ผ๋ ฌ๋กœ 3๊ฐœ ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ์— ๋Œ€ํ•ด ์œ„์˜ ๋ชจ์–‘์ด ๋งŒ๋“ค์–ด์ง€๋„๋ก ํ•˜๋Š” ์ขŒํ‘œ๋„ ํƒ์ƒ‰ํ•˜๋„๋ก ๊ตฌํ˜„ํ–ˆ๋‹ค.

728x90

'Algorithm > ๐Ÿ“˜ Baekjoon Judge' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[BOJ] ๋ฐฑ์ค€ 20055๋ฒˆ ์ปจ๋ฒ ์ด์–ด ๋ฒจํŠธ ์œ„์˜ ๋กœ๋ด‡ - ํŒŒ์ด์ฌ(Python)  (0) 2022.04.01
[BOJ] ๋ฐฑ์ค€ 16234๋ฒˆ ์ธ๊ตฌ ์ด๋™ - ํŒŒ์ด์ฌ(Python)  (1) 2022.03.31
[BOJ] ๋ฐฑ์ค€ 3190๋ฒˆ ๋ฑ€ - ํŒŒ์ด์ฌ(Python)  (3) 2022.02.23
[BOJ] ๋ฐฑ์ค€ 1238๋ฒˆ ํŒŒํ‹ฐ - ํŒŒ์ด์ฌ(Python)  (0) 2022.01.19
[BOJ] ๋ฐฑ์ค€ 1261๋ฒˆ ์•Œ๊ณ ์ŠคํŒŸ - ํŒŒ์ด์ฌ(Python)  (0) 2022.01.19
    'Algorithm/๐Ÿ“˜ Baekjoon Judge' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€์ด๋‹ค
    • [BOJ] ๋ฐฑ์ค€ 20055๋ฒˆ ์ปจ๋ฒ ์ด์–ด ๋ฒจํŠธ ์œ„์˜ ๋กœ๋ด‡ - ํŒŒ์ด์ฌ(Python)
    • [BOJ] ๋ฐฑ์ค€ 16234๋ฒˆ ์ธ๊ตฌ ์ด๋™ - ํŒŒ์ด์ฌ(Python)
    • [BOJ] ๋ฐฑ์ค€ 3190๋ฒˆ ๋ฑ€ - ํŒŒ์ด์ฌ(Python)
    • [BOJ] ๋ฐฑ์ค€ 1238๋ฒˆ ํŒŒํ‹ฐ - ํŒŒ์ด์ฌ(Python)
    J1Yun
    J1Yun
    ๊ฐœ๋ฐœ ๊ด€๋ จ ๊ธฐ์ˆ  ๋ฐ ๊ณต๋ถ€ ๋‚ด์šฉ ๊ธฐ๋ก์žฅ

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”