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] ๋ฐฑ์ค€ 15685๋ฒˆ ๋“œ๋ž˜๊ณค ์ปค๋ธŒ - ํŒŒ์ด์ฌ(Python)
Algorithm/๐Ÿ“˜ Baekjoon Judge

[BOJ] ๋ฐฑ์ค€ 15685๋ฒˆ ๋“œ๋ž˜๊ณค ์ปค๋ธŒ - ํŒŒ์ด์ฌ(Python)

728x90

๋ฌธ์ œ

๋“œ๋ž˜๊ณค ์ปค๋ธŒ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์„ธ ๊ฐ€์ง€ ์†์„ฑ์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์œผ๋ฉฐ, ์ด์ฐจ์› ์ขŒํ‘œ ํ‰๋ฉด ์œ„์—์„œ ์ •์˜๋œ๋‹ค. ์ขŒํ‘œ ํ‰๋ฉด์˜ x์ถ•์€ → ๋ฐฉํ–ฅ, y์ถ•์€ ↓ ๋ฐฉํ–ฅ์ด๋‹ค.

  1. ์‹œ์ž‘ ์ 
  2. ์‹œ์ž‘ ๋ฐฉํ–ฅ
  3. ์„ธ๋Œ€

0์„ธ๋Œ€ ๋“œ๋ž˜๊ณค ์ปค๋ธŒ๋Š” ์•„๋ž˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์€ ๊ธธ์ด๊ฐ€ 1์ธ ์„ ๋ถ„์ด๋‹ค. ์•„๋ž˜ ๊ทธ๋ฆผ์€ (0, 0)์—์„œ ์‹œ์ž‘ํ•˜๊ณ , ์‹œ์ž‘ ๋ฐฉํ–ฅ์€ ์˜ค๋ฅธ์ชฝ์ธ 0์„ธ๋Œ€ ๋“œ๋ž˜๊ณค ์ปค๋ธŒ์ด๋‹ค.

 

1์„ธ๋Œ€ ๋“œ๋ž˜๊ณค ์ปค๋ธŒ๋Š” 0์„ธ๋Œ€ ๋“œ๋ž˜๊ณค ์ปค๋ธŒ๋ฅผ ๋ ์ ์„ ๊ธฐ์ค€์œผ๋กœ ์‹œ๊ณ„ ๋ฐฉํ–ฅ์œผ๋กœ 90๋„ ํšŒ์ „์‹œํ‚จ ๋‹ค์Œ 0์„ธ๋Œ€ ๋“œ๋ž˜๊ณค ์ปค๋ธŒ์˜ ๋ ์ ์— ๋ถ™์ธ ๊ฒƒ์ด๋‹ค. ๋ ์ ์ด๋ž€ ์‹œ์ž‘ ์ ์—์„œ ์„ ๋ถ„์„ ํƒ€๊ณ  ์ด๋™ํ–ˆ์„ ๋•Œ, ๊ฐ€์žฅ ๋จผ ๊ฑฐ๋ฆฌ์— ์žˆ๋Š” ์ ์„ ์˜๋ฏธํ•œ๋‹ค.

2์„ธ๋Œ€ ๋“œ๋ž˜๊ณค ์ปค๋ธŒ๋„ 1์„ธ๋Œ€๋ฅผ ๋งŒ๋“  ๋ฐฉ๋ฒ•์„ ์ด์šฉํ•ด์„œ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. (ํŒŒ๋ž€์ƒ‰ ์„ ๋ถ„์€ ์ƒˆ๋กœ ์ถ”๊ฐ€๋œ ์„ ๋ถ„์„ ๋‚˜ํƒ€๋‚ธ๋‹ค)

3์„ธ๋Œ€ ๋“œ๋ž˜๊ณค ์ปค๋ธŒ๋„ 2์„ธ๋Œ€ ๋“œ๋ž˜๊ณค ์ปค๋ธŒ๋ฅผ ์ด์šฉํ•ด ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. ์•„๋ž˜ ๊ทธ๋ฆผ์€ 3์„ธ๋Œ€ ๋“œ๋ž˜๊ณค ์ปค๋ธŒ์ด๋‹ค.

์ฆ‰, K(K > 1)์„ธ๋Œ€ ๋“œ๋ž˜๊ณค ์ปค๋ธŒ๋Š” K-1์„ธ๋Œ€ ๋“œ๋ž˜๊ณค ์ปค๋ธŒ๋ฅผ ๋ ์ ์„ ๊ธฐ์ค€์œผ๋กœ 90๋„ ์‹œ๊ณ„ ๋ฐฉํ–ฅ ํšŒ์ „ ์‹œํ‚จ ๋‹ค์Œ, ๊ทธ๊ฒƒ์„ ๋ ์ ์— ๋ถ™์ธ ๊ฒƒ์ด๋‹ค.

ํฌ๊ธฐ๊ฐ€ 100×100์ธ ๊ฒฉ์ž ์œ„์— ๋“œ๋ž˜๊ณค ์ปค๋ธŒ๊ฐ€ N๊ฐœ ์žˆ๋‹ค. ์ด๋•Œ, ํฌ๊ธฐ๊ฐ€ 1×1์ธ ์ •์‚ฌ๊ฐํ˜•์˜ ๋„ค ๊ผญ์ง“์ ์ด ๋ชจ๋‘ ๋“œ๋ž˜๊ณค ์ปค๋ธŒ์˜ ์ผ๋ถ€์ธ ์ •์‚ฌ๊ฐํ˜•์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค. ๊ฒฉ์ž์˜ ์ขŒํ‘œ๋Š” (x, y)๋กœ ๋‚˜ํƒ€๋‚ด๋ฉฐ, 0 ≤ x ≤ 100, 0 ≤ y ≤ 100๋งŒ ์œ ํšจํ•œ ์ขŒํ‘œ์ด๋‹ค.

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— ๋“œ๋ž˜๊ณค ์ปค๋ธŒ์˜ ๊ฐœ์ˆ˜ N(1 ≤ N ≤ 20)์ด ์ฃผ์–ด์ง„๋‹ค. ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ N๊ฐœ์˜ ์ค„์—๋Š” ๋“œ๋ž˜๊ณค ์ปค๋ธŒ์˜ ์ •๋ณด๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๋“œ๋ž˜๊ณค ์ปค๋ธŒ์˜ ์ •๋ณด๋Š” ๋„ค ์ •์ˆ˜ x, y, d, g๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค. x์™€ y๋Š” ๋“œ๋ž˜๊ณค ์ปค๋ธŒ์˜ ์‹œ์ž‘ ์ , d๋Š” ์‹œ์ž‘ ๋ฐฉํ–ฅ, g๋Š” ์„ธ๋Œ€์ด๋‹ค. (0 ≤ x, y ≤ 100, 0 ≤ d ≤ 3, 0 ≤ g ≤ 10)

์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง€๋Š” ๋“œ๋ž˜๊ณค ์ปค๋ธŒ๋Š” ๊ฒฉ์ž ๋ฐ–์œผ๋กœ ๋ฒ—์–ด๋‚˜์ง€ ์•Š๋Š”๋‹ค. ๋“œ๋ž˜๊ณค ์ปค๋ธŒ๋Š” ์„œ๋กœ ๊ฒน์น  ์ˆ˜ ์žˆ๋‹ค.

๋ฐฉํ–ฅ์€ 0, 1, 2, 3 ์ค‘ ํ•˜๋‚˜์ด๊ณ , ๋‹ค์Œ์„ ์˜๋ฏธํ•œ๋‹ค.

  • 0: x์ขŒํ‘œ๊ฐ€ ์ฆ๊ฐ€ํ•˜๋Š” ๋ฐฉํ–ฅ (→)
  • 1: y์ขŒํ‘œ๊ฐ€ ๊ฐ์†Œํ•˜๋Š” ๋ฐฉํ–ฅ (↑)
  • 2: x์ขŒํ‘œ๊ฐ€ ๊ฐ์†Œํ•˜๋Š” ๋ฐฉํ–ฅ (←)
  • 3: y์ขŒํ‘œ๊ฐ€ ์ฆ๊ฐ€ํ•˜๋Š” ๋ฐฉํ–ฅ (↓)

์ถœ๋ ฅ

์ฒซ์งธ ์ค„์— ํฌ๊ธฐ๊ฐ€ 1×1์ธ ์ •์‚ฌ๊ฐํ˜•์˜ ๋„ค ๊ผญ์ง“์ ์ด ๋ชจ๋‘ ๋“œ๋ž˜๊ณค ์ปค๋ธŒ์˜ ์ผ๋ถ€์ธ ๊ฒƒ์˜ ๊ฐœ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

 

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

 

15685๋ฒˆ: ๋“œ๋ž˜๊ณค ์ปค๋ธŒ

์ฒซ์งธ ์ค„์— ๋“œ๋ž˜๊ณค ์ปค๋ธŒ์˜ ๊ฐœ์ˆ˜ N(1 ≤ N ≤ 20)์ด ์ฃผ์–ด์ง„๋‹ค. ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ N๊ฐœ์˜ ์ค„์—๋Š” ๋“œ๋ž˜๊ณค ์ปค๋ธŒ์˜ ์ •๋ณด๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๋“œ๋ž˜๊ณค ์ปค๋ธŒ์˜ ์ •๋ณด๋Š” ๋„ค ์ •์ˆ˜ x, y, d, g๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค. x์™€ y๋Š” ๋“œ๋ž˜๊ณค ์ปค

www.acmicpc.net

 

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

n = int(input())
data = []
grid = [[0] * 101 for _ in range(101)]
for _ in range(n):
    data.append(tuple(map(int, input().split())))

dx, dy = [0, -1, 0, 1], [1, 0, -1, 0]
for y, x, d, g in data:
    dragon = []
    dragon.append((x, y, d))
    grid[x][y] = 1
    nx, ny = x + dx[d], y + dy[d]
    for _ in range(g):
        length = len(dragon)
        for i in range(length-1, -1, -1):
            d = (dragon[i][2] + 1) % 4
            dragon.append((nx, ny, d))
            grid[nx][ny] = 1
            nx, ny = nx + dx[d], ny + dy[d]
    grid[nx][ny] = 1

result = 0
for i in range(100):
    for j in range(100):
        if grid[i][j] and grid[i+1][j] and grid[i][j+1] and grid[i+1][j+1]:
            result += 1

print(result)

dragon ์ด๋ผ๋Š” ๋ฐฐ์—ด์— ๊ทธ๋ฆด ๊ฒฝ๋กœ์˜ ์‹œ์ž‘ ์œ„์น˜(x, y)์™€ ๋ฐฉํ–ฅ(d)๋ฅผ ์ €์žฅํ•˜๊ณ , ํ•ด๋‹น ๋์ (nx, ny)๋ฅผ ๊ธฐ์ค€์œผ๋กœ 90๋„ ์‹œ๊ณ„ ๋ฐฉํ–ฅ์œผ๋กœ ๋ฐฉํ–ฅ ๋Œ๋ ค๊ฐ€๋ฉฐ ํ•˜๋‚˜ํ•˜๋‚˜ ๊ทธ๋ ค๋‚˜๊ฐ€๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„ํ–ˆ๋‹ค. ์ด๋•Œ, ์ด์ „ ๊ฒฝ๋กœ์˜ ๋์ ์„ ๊ธฐ์ค€์œผ๋กœ ๊ทธ๋ ค๋‚˜๊ฐ€์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— dragon ๋ฐฐ์—ด์„ ์—ญ์ˆœํšŒํ•˜๋ฉด์„œ ์ €์žฅ๋˜์–ด์žˆ๋Š” ๋ฐฉํ–ฅ์„ 90๋„ ๊บพ์€ ๋ฐฉํ–ฅ(d = (dragon[i][2] + 1) % 4)์œผ๋กœ ์ด์ „ ๊ฒฝ๋กœ์˜ ๋์ ์— ์—ฐ๊ฒฐํ•ด์•ผ ํ•œ๋‹ค.

728x90

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

[BOJ] ๋ฐฑ์ค€ 21608๋ฒˆ ์ƒ์–ด ์ดˆ๋“ฑํ•™๊ต - ํŒŒ์ด์ฌ(Python)  (0) 2022.10.07
[BOJ] ๋ฐฑ์ค€ 17144๋ฒˆ ๋ฏธ์„ธ๋จผ์ง€ ์•ˆ๋…•! - ํŒŒ์ด์ฌ(Python)  (0) 2022.08.26
[BOJ] ๋ฐฑ์ค€ 2133๋ฒˆ ํƒ€์ผ ์ฑ„์šฐ๊ธฐ - ํŒŒ์ด์ฌ(Python)  (0) 2022.08.18
[BOJ] ๋ฐฑ์ค€ 2294๋ฒˆ ๋™์ „ 2 - ํŒŒ์ด์ฌ(Python)  (0) 2022.08.18
[BOJ] ๋ฐฑ์ค€ 1890๋ฒˆ ์ ํ”„ - ํŒŒ์ด์ฌ(Python)  (0) 2022.08.13
    'Algorithm/๐Ÿ“˜ Baekjoon Judge' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€์ด๋‹ค
    • [BOJ] ๋ฐฑ์ค€ 21608๋ฒˆ ์ƒ์–ด ์ดˆ๋“ฑํ•™๊ต - ํŒŒ์ด์ฌ(Python)
    • [BOJ] ๋ฐฑ์ค€ 17144๋ฒˆ ๋ฏธ์„ธ๋จผ์ง€ ์•ˆ๋…•! - ํŒŒ์ด์ฌ(Python)
    • [BOJ] ๋ฐฑ์ค€ 2133๋ฒˆ ํƒ€์ผ ์ฑ„์šฐ๊ธฐ - ํŒŒ์ด์ฌ(Python)
    • [BOJ] ๋ฐฑ์ค€ 2294๋ฒˆ ๋™์ „ 2 - ํŒŒ์ด์ฌ(Python)
    J1Yun
    J1Yun
    ๊ฐœ๋ฐœ ๊ด€๋ จ ๊ธฐ์ˆ  ๋ฐ ๊ณต๋ถ€ ๋‚ด์šฉ ๊ธฐ๋ก์žฅ

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