1. ์•„์ด๋””์–ด๋ฅผ ์ฝ”๋“œ๋กœ ๋ฐ”๊พธ๋Š” ๊ตฌํ˜„

  • ๊ตฌํ˜„(implementation)์ด๋ž€, ๋จธ๋ฆฟ์†์— ์žˆ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์†Œ์Šค์ฝ”๋“œ๋กœ ๋ฐ”๊พธ๋Š” ๊ณผ์ •์ด๋‹ค.
  • ํ”ํžˆ ๋ฌธ์ œ ํ•ด๊ฒฐ ๋ถ„์•ผ์—์„œ ๊ตฌํ˜„ ์œ ํ˜•์˜ ๋ฌธ์ œ๋Š” ํ’€์ด๋ฅผ ๋– ์˜ฌ๋ฆฌ๋Š” ๊ฒƒ์€ ์‰ฝ์ง€๋งŒ ์ฝ”๋“œ๋กœ ์˜ฎ๊ธฐ๊ธฐ ์–ด๋ ค์šด ๋ฌธ์ œ๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ๋Œ€์ฒด๋กœ ์‚ฌ์†Œํ•œ ์กฐ๊ฑด ์„ค์ •์ด ๋งŽ์€ ๋ฌธ์ œ์ผ์ˆ˜๋ก ์ฝ”๋“œ๋กœ ๊ตฌํ˜„ํ•˜๊ธฐ๊ฐ€ ๊นŒ๋‹ค๋กญ๋‹ค.
  • ์™„์ „ ํƒ์ƒ‰ : ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ์ฃผ์ € ์—†์ด ๋‹ค ๊ณ„์‚ฐํ•˜๋Š” ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•
  • ์‹œ๋ฎฌ๋ ˆ์ด์…˜ : ๋ฌธ์ œ์—์„œ ์ œ์‹œํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ•œ ๋‹จ๊ณ„์”ฉ ์ฐจ๋ก€๋Œ€๋กœ ์ง์ ‘ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋Š” ๋ฌธ์ œ ์œ ํ˜•

๊ตฌํ˜„ ์‹œ ๊ณ ๋ คํ•ด์•ผ ํ•  ๋ฉ”๋ชจ๋ฆฌ ์ œ์•ฝ ์‚ฌํ•ญ

  • ํŒŒ์ด์ฌ์—์„œ๋Š” ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์ง์ ‘ ์ž๋ฃŒํ˜•์„ ์ง€์ •ํ•  ํ•„์š”๊ฐ€ ์—†์œผ๋ฉฐ ๋งค์šฐ ํฐ ์ˆ˜์˜ ์—ฐ์‚ฐ๋„ ์ง€์›ํ•œ๋‹ค.
  • ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ œํ•œํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ์—์„œ๋Š” ์ด๋ฅผ ์—ผ๋‘์— ๋‘๊ณ  ์ฝ”๋”ฉ์„ ํ•ด์•ผ ํ•œ๋‹ค.

์ฑ„์  ํ™˜๊ฒฝ

  • ํŒŒ์ด์ฌ์€ C/C++์— ๋น„ํ•ด ๋™์ž‘ ์†๋„๊ฐ€ ๋Š๋ฆฌ๋‹ค.
  • ์ผ๋ฐ˜์ ์œผ๋กœ ์‹œ๊ฐ„ ๋ณต์žก๋„ O(NlogN) ์ด๋‚ด์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ด์šฉํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ’€์–ด์•ผ ํ•œ๋‹ค.

๊ตฌํ˜„ ๋ฌธ์ œ์— ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ๋ฒ•

  • ๋ณดํ†ต ๊ตฌํ˜„ ์œ ํ˜•์˜ ๋ฌธ์ œ๋Š” ์‚ฌ์†Œํ•œ ์กฐ๊ฑด์„ ๋ฌธ์ œ์—์„œ ๋ช…์‹œํ•ด์ฃผ๋ฉฐ ๋ฌธ์ œ๊ฐ€ ๊ธธ๋‹ค.
  • ๋ฌธ์ž์—ด ์ฒ˜๋ฆฌ๊ฐ€ ๋œ ๊นŒ๋‹ค๋กœ์šด ํŒŒ์ด์ฌ์€ ๊ตฌํ˜„๋ฌธ์ œ๋ฅผ ์‰ฝ๊ฒŒ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.
  • PyPy๋Š” ํŒŒ์ด์ฌ๊ณผ ๋ฌธ๋ฒ•์ด ๋™์ผํ•˜์ง€๋งŒ ์†๋„๊ฐ€ ๋งค์šฐ ๋น ๋ฅด๋‹ค.

์˜ˆ์ œ 1. ์ƒํ•˜์ขŒ์šฐ

๋ฌธ์ œ

์—ฌํ–‰๊ฐ€ A๋Š” N * N ํฌ๊ธฐ์˜ ์ •์‚ฌ๊ฐํ˜• ๊ณต๊ฐ„ ์œ„์— ์žˆ๋‹ค. ์ด ๊ณต๊ฐ„์€ 1 * 1 ํฌ๊ธฐ์˜ ์ •์‚ฌ๊ฐํ˜•์œผ๋กœ ๋‚˜๋ˆ„์–ด์ ธ ์žˆ๋‹ค. ๊ฐ€์žฅ ์™ผ์ชฝ ์œ„ ์ขŒํ‘œ๋Š” (1, 1)์ด๋ฉฐ, ๊ฐ€์žฅ ์˜ค๋ฅธ์ชฝ ์•„๋ž˜ ์ขŒํ‘œ๋Š” (N, N)์— ํ•ด๋‹นํ•œ๋‹ค. ์—ฌํ–‰๊ฐ€ A๋Š” ์ƒํ•˜์ขŒ์šฐ ๋ฐฉํ–ฅ์œผ๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์‹œ์ž‘ ์ขŒํ‘œ๋Š” ํ•ญ์ƒ (1,1)์ด๋‹ค. ์šฐ๋ฆฌ ์•ž์—๋Š” ์—ฌํ–‰๊ฐ€ A๊ฐ€ ์ด๋™ํ•  ๊ณ„ํš์ด ์ ํžŒ ๊ณ„ํš์„œ๊ฐ€ ๋†“์—ฌ์žˆ๋‹ค.

๊ณ„ํš์„œ์—๋Š” ํ•˜๋‚˜์˜ ์ค„์— ๋„์–ด์“ฐ๊ธฐ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํ•˜์—ฌ L, R, U, D ์ค‘ ํ•˜๋‚˜์˜ ๋ฌธ์ž๊ฐ€ ๋ฐ˜๋ณต์ ์œผ๋กœ ์ ํ˜€์žˆ๋‹ค. ์ด๋•Œ ์—ฌํ–‰๊ฐ€ A๊ฐ€ N*N ํฌ๊ธฐ์˜ ๊ณต๊ฐ„์„ ๋ฒ—์–ด๋‚˜๋Š” ์›€์ง์ž„์€ ๋ฌด์‹œ๋œ๋‹ค. ์ตœ์ข…์ ์œผ๋กœ ๋„์ฐฉํ•  ์ง€์ ์˜ ์ขŒํ‘œ๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

ํ•ด์„ค

์š”๊ตฌ์‚ฌํ•ญ๋Œ€๋กœ ๊ตฌํ˜„ํ•˜๋ฉด ์—ฐ์‚ฐ ํšŸ์ˆ˜๋Š” ์ด๋™ ํšŸ์ˆ˜์— ๋น„๋ก€ํ•˜๊ฒŒ ๋œ๋‹ค. ์ฆ‰ ์‹œ๊ฐ„๋ณต์žก๋„๋Š” O(N)์ด๋‹ค. ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ๋‚˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋Œ€ํšŒ์—์„œ ๊ฐ€์žฅ ๋‚œ์ด๋„๊ฐ€ ๋‚ฎ์€ 1-2๋ฒˆ์€ ๋Œ€๋ถ€๋ถ„ ๊ทธ๋ฆฌ๋””๋‚˜ ๊ตฌํ˜„ ๋ฌธ์ œ์ด๋‹ค.

n = int(input())
x, y = 1, 1
plans = input().split()

dx = [0, 0, -1, 1]
dy = [-1, 1, 0, 0]
move = ['L', 'R', 'U', 'D']

for plan in plans :
    for i in range(4):
        if plan == move[i]:
            nx = x + dx[i]
            ny = y + dy[i]
    if nx < 1 or ny < 1 or nx > n or ny > n: continue
    x, y = nx, ny

print(x, y)

์˜ˆ์ œ 2. ์‹œ๊ฐ

๋ฌธ์ œ

์ •์ˆ˜ N์ด ์ž…๋ ฅ๋˜๋ฉด 00์‹œ 00๋ถ„ 00์ดˆ๋ถ€ํ„ฐ N์‹œ 59๋ถ„ 59์ดˆ๊นŒ์ง€์˜ ๋ชจ๋“  ์‹œ๊ฐ ์ค‘์—์„œ 3์ด ํ•˜๋‚˜๋ผ๋„ ํฌํ•จ๋˜๋Š” ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

ํ•ด์„ค

ํ•˜๋ฃจ๋Š” 86,400์ดˆ๋กœ ์ œ์ผ ํฐ ๊ฒฝ์šฐ์˜ ์ˆ˜๋Š” 86,400๊ฐ€์ง€๋ฟ์ด๋‹ค. ๋‹ค์‹œ ๋งํ•ด ๊ฒฝ์šฐ์˜ ์ˆ˜๊ฐ€ 100,000๊ฐœ๋„ ๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ ํŒŒ์ด์ฌ์—์„œ ๋ฌธ์ž์—ด ์—ฐ์‚ฐ์„ ํ•˜๋”๋ผ๋„ 2์ดˆ ์•ˆ์— ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋Ÿฌํ•œ ์œ ํ˜•์€ ์™„์ „ ํƒ์ƒ‰ ์œ ํ˜•์œผ๋กœ ๋ถ„๋ฅ˜๋˜๊ธฐ๋„ ํ•œ๋‹ค. ์™„์ „ ํƒ์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๋ชจ๋‘ ๊ฒ€์‚ฌํ•˜๋Š” ํƒ์ƒ‰์ด๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์ „์ฒด ๋ฐ์ดํ„ฐ์˜ ๊ฐœ์ˆ˜๊ฐ€ 100๋งŒ ๊ฐœ ์ดํ•˜์ผ ๋•Œ ์™„์ „ ํƒ์ƒ‰์„ ์‚ฌ์šฉํ•˜๋ฉด ์ ์ ˆํ•˜๋‹ค.

h = int(input())
count = 0

for i in range(h + 1) :
    for j in range(60):
        for k in range(60):
            if '3' in str(i) + str(j) + str(k):
                count += 1
print(count)

2. ์™•์‹ค์˜ ๋‚˜์ดํŠธ

๋‚œ์ด๋„ ํ•˜

๋ฌธ์ œ

ํ–‰๋ณต ์™•๊ตญ์˜ ์™•์‹ค ์ •์›์€ ์ฒด์ŠคํŒ๊ณผ ๊ฐ™์€ 8 * 8 ์ขŒํ‘œ ํ‰๋ฉด์ด๋‹ค. ์™•์‹ค ์ •์›์˜ ํŠน์ •ํ•œ ํ•œ ์นธ์— ๋‚˜์ดํŠธ๊ฐ€ ์„œ ์žˆ๋‹ค. ๋‚˜์ดํŠธ๋Š” ๋งค์šฐ ์ถฉ์„ฑ์Šค๋Ÿฌ์šด ์‹ ํ•˜๋กœ์„œ ๋งค์ผ ๋ฌด์ˆ ์„ ์—ฐ๋งˆํ•œ๋‹ค. ๋‚˜ํ‹ฐ์œผ๋Š” ๋ง์„ ํƒ€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๋™ํ•  ๋•Œ๋Š” L์ž ํ˜•ํƒœ๋กœ๋งŒ ์ด๋™ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ •์› ๋ฐ–์œผ๋กœ๋Š” ๋‚˜๊ฐˆ ์ˆ˜ ์—†๋‹ค. ๋‚˜์ดํŠธ๋Š” ํŠน์ •ํ•œ ์œ„์น˜์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ 2๊ฐ€์ง€ ๊ฒฝ์šฐ๋กœ ์ด๋™ํ•œ๋‹ค.

  1. ์ˆ˜ํ‰์œผ๋กœ ๋‘ ์นธ ์ด๋™ํ•œ ๋’ค์— ์ˆ˜์ง์œผ๋กœ ํ•œ ์นธ ์ด๋™
  2. ์ˆ˜์ง์œผ๋กœ ๋‘ ์นธ ์ด๋™ํ•œ ๋’ค์— ์ˆ˜ํ‰์œผ๋กœ ํ•œ ์นธ ์ด๋™

์ด์ฒ˜๋Ÿผ 8*8 ์ขŒํ‘œ ํ‰๋ฉด์ƒ์—์„œ ๋‚˜์ดํŠธ์˜ ์œ„์น˜๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ ๋‚˜์ดํŠธ๊ฐ€ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค. ์ด๋•Œ ์™•์‹ค์˜ ์ •์›์—์„œ ํ–‰ ์œ„์น˜๋ฅผ ํ‘œํ˜„ํ•  ๋•Œ๋Š” 1๋ถ€ํ„ฐ 8๋กœ ํ‘œํ˜„ํ•˜๋ฉฐ, ์—ด ์œ„์น˜๋ฅผ ํ‘œํ˜„ํ•  ๋•Œ๋Š” a๋ถ€ํ„ฐ h๋กœ ํ‘œํ˜„ํ•œ๋‹ค.

ํ•ด์„ค

๋‚˜์ดํŠธ๊ฐ€ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ๋กœ๋ฅผ ํ•˜๋‚˜์”ฉ ํ™•์ธํ•˜์—ฌ ์ด๋™ํ•˜๋ฉด ๋œ๋‹ค. ๋‹ค๋งŒ ์ขŒํ‘œ ํ‰๋ฉด์„ ๋ฒ—์–ด๋‚˜์ง€ ์•Š๋„๋ก ๊ผผ๊ผผํ•˜๊ฒŒ ๊ฒ€์‚ฌํ•˜๋Š” ๊ณผ์ •์ด ํ•„์š”ํ•˜๋‹ค.

์ฝ”๋“œ

# ํ˜„์žฌ ๋‚˜์ดํŠธ์˜ ์œ„์น˜
input_data = input()
row = int(input_data[1])
column = int(ord(input_data[0])) - int(ord('a')) + 1

# ๋‚˜์ดํŠธ๊ฐ€ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋Š” 8๊ฐ€์ง€ ๋ฐฉํ–ฅ
steps = [(-2, -1), (-1, -2), (1, -2), (2, -1), (2, 1), (1, 2), (-1, 2), (-2, 1)]

# ๊ฐ ์œ„์น˜๋กœ ์ด๋™์ด ๊ฐ€๋Šฅํ•œ์ง€ ํ™•์ธ
result = 0
for step in steps :
    next_row = row + step[0]
    next_column = column + step[1]
    if next_row >= 1 and next_row <= 8 and next_column >= 1 and next_column <= 8:
        result += 1

print(result)

3. ๊ฒŒ์ž„ ๊ฐœ๋ฐœ

๋ฌธ์ œ

์บ๋ฆญํ„ฐ๊ฐ€ ์žˆ๋Š” ์žฅ์†Œ๋Š” 1*1 ํฌ๊ธฐ์˜ ์ •์‚ฌ๊ฐํ˜•์œผ๋กœ ์ด๋ค„์ง„ N * M ํฌ๊ธฐ์˜ ์ง์‚ฌ๊ฐํ˜•์œผ๋กœ, ๊ฐ๊ฐ์˜ ์นธ์€ ์œก์ง€ ๋˜๋Š” ๋ฐ”๋‹ค์ด๋‹ค. ์บ๋ฆญํ„ฐ๋Š” ๋™์„œ๋‚จ๋ถ ์ค‘ ํ•œ ๊ณณ์„ ๋ฐ”๋ผ๋ณธ๋‹ค. ๋งต์˜ ๊ฐ ์นธ์€ (A, B)๋กœ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๊ณ , A๋Š” ๋ถ์ชฝ์œผ๋กœ๋ถ€ํ„ฐ ๋–จ์–ด์ง„ ์นธ์˜ ๊ฐœ์ˆ˜, B๋Š” ์„œ์ชฝ์œผ๋กœ๋ถ€ํ„ฐ ๋–จ์–ด์ง„ ์นธ์˜ ๊ฐœ์ˆ˜์ด๋‹ค. ์บ๋ฆญํ„ฐ๋Š” ์ƒํ•˜์ขŒ์šฐ๋กœ ์›€์ง์ผ ์ˆ˜ ์žˆ๊ณ , ๋ฐ”๋‹ค๋กœ ๋˜์–ด ์žˆ๋Š” ๊ณต๊ฐ„์—๋Š” ๊ฐˆ ์ˆ˜ ์—†๋‹ค. ์บ๋ฆญํ„ฐ์˜ ์›€์ง์ž„์„ ์„ค์ •ํ•˜๊ธฐ ์œ„ํ•ด ์ •ํ•ด ๋†“์€ ๋งค๋‰ด์–ผ์€ ์ด๋Ÿฌํ•˜๋‹ค.

  1. ํ˜„์žฌ ์œ„์น˜์—์„œ ํ˜„์žฌ ๋ฐฉํ–ฅ์„ ๊ธฐ์ค€์œผ๋กœ ์™ผ์ชฝ ๋ฐฉํ–ฅ๋ถ€ํ„ฐ ์ฐจ๋ก€๋Œ€๋กœ ๊ฐˆ ๊ณณ์„ ์ •ํ•œ๋‹ค.
  2. ์บ๋ฆญํ„ฐ์˜ ๋ฐ”๋กœ ์™ผ์ชฝ ๋ฐฉํ–ฅ์— ์•„์ง ๊ฐ€๋ณด์ง€ ์•Š์€ ์นธ์ด ์กด์žฌํ•œ๋‹ค๋ฉด, ์™ผ์ชฝ ๋ฐฉํ–ฅ์œผ๋กœ ํšŒ์ „ํ•œ ๋‹ค์Œ ์™ผ์ชฝ์œผ๋กœ ํ•œ ์นธ์„ ์ „์ง„ํ•œ๋‹ค. ์™ผ์ชฝ ๋ฐฉํ–ฅ์— ๊ฐ€๋ณด์ง€ ์•Š์€ ์นธ์ด ์—†๋‹ค๋ฉด, ์™ผ์ชฝ ๋ฐฉํ–ฅ์œผ๋กœ ํšŒ์ „๋งŒ ์ˆ˜ํ–‰ํ•˜๊ณ  1๋‹จ๊ณ„๋กœ ๋Œ์•„๊ฐ„๋‹ค.
  3. ๋งŒ์•ฝ ๋„ค ๋ฐฉํ–ฅ ๋ชจ๋‘ ์ด๋ฏธ ๊ฐ€๋ณธ ์นธ์ด๊ฑฐ๋‚˜ ๋ฐ”๋‹ค๋กœ ๋˜์–ด ์žˆ๋Š” ์นธ์ธ ๊ฒฝ์šฐ์—๋Š”, ๋ฐ”๋ผ๋ณด๋Š” ๋ฐฉํ–ฅ์„ ์œ ์ง€ํ•œ ์ฑ„๋กœ ํ•œ ์นธ ๋’ค๋กœ ๊ฐ€๊ณ  1๋‹จ๊ณ„๋กœ ๋Œ์•„๊ฐ„๋‹ค. ๋‹จ, ์ด๋•Œ ๋’ค์ชฝ ๋ฐฉํ–ฅ์ด ๋ฐ”๋‹ค์ธ ์นธ์ด๋ผ ๋’ค๋กœ ๊ฐˆ ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ์—๋Š” ์›€์ง์ž„์„ ๋ฉˆ์ถ˜๋‹ค.

ํ˜„๋ฏผ์ด๋Š” ์œ„ ๊ณผ์ •์„ ๋ฐ˜๋ณต์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•˜๋ฉด์„œ ์บ๋ฆญํ„ฐ์˜ ์›€์ง์ž„์— ์ด์ƒ์ด ์žˆ๋Š”์ง€ ํ…Œ์ŠคํŠธํ•˜๋ ค๊ณ  ํ•œ๋‹ค. ๋ฉ”๋‰ด์–ผ์— ๋”ฐ๋ผ ์บ๋ฆญํ„ฐ๋ฅผ ์ด๋™์‹œํ‚จ ๋’ค์— ์บ๋ฆญํ„ฐ๊ฐ€ ๋ฐฉ๋ฌธํ•œ ์นธ์˜ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“œ์‹œ์˜ค.

ํ•ด์„ค

์ „ํ˜•์ ์ธ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ๋ฌธ์ œ์ด๋‹ค. ๋ณ„๋„์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ํ•„์š”ํ•˜๋‹ค๊ธฐ๋ณด๋‹ค๋Š” ๋ฌธ์ œ์—์„œ ์š”๊ตฌํ•˜๋Š” ๋‚ด์šฉ์„ ์˜ค๋ฅ˜ ์—†์ด ์„ฑ์‹คํ•˜๊ฒŒ ๊ตฌํ˜„๋งŒ ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ํ’€ ์ˆ˜ ์žˆ๋‹ค๋Š” ํŠน์ง• ์žˆ๋‹ค. ๋‹ค๋งŒ, ๋ฌธ์ œ๊ฐ€ ๊ธธ๊ณ  ๋ฌธ์ œ๋ฅผ ๋ฐ”๋ฅด๊ฒŒ ์ดํ•ดํ•˜์—ฌ ์†Œ์Šค์ฝ”๋“œ๋กœ ์˜ฎ๊ธฐ๋Š” ๊ณผ์ •์ด ๊ฐ„๋‹จํ•˜์ง€ ์•Š๋‹ค. ๋ฐ˜๋ณต์ ์ธ ์ˆ™๋‹ฌ์ด ์ค‘์š”ํ•˜๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ ๋ฐฉํ–ฅ์„ ์„ค์ •ํ•ด์„œ ์ด๋™ํ•˜๋Š” ๋ฌธ์ œ ์œ ํ˜•์—์„œ๋Š” dx dy๋ผ๋Š” ๋ณ„๋„์˜ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋งŒ๋“ค์–ด ๋ฐฉํ–ฅ์„ ์ •ํ•˜๋Š” ๊ฒƒ์ด ํšจ๊ณผ์ ์ด๋‹ค.

์ฝ”๋“œ

n, m = map(int, input().split())

d = [[0] * m for _ in range(n)]
x, y, direction = map(int, input().split())
d[x][y] = 1 # ํ˜„์žฌ ์ขŒํ‘œ ๋ฐฉ๋ฌธ ์ฒ˜๋ฆฌ

array = []
for i in range(n): array.append(list(map(int, input().split())))
dx = [-1, 0, 1, 0]
dy = [0, 1, 0, -1]

# ์™ผ์ชฝ์œผ๋กœ ํšŒ์ „
def turn_left() :
    global direction
    direction -= 1
    if direction == -1 : direction = 3

count = 1
turn_time = 0

while True :
    turn_left()
    nx = x + dx[direction]
    ny = y + dy[direction]
    
    if d[nx][ny] == 0 and array[nx][ny] == 0 : # ๊ฐ€๋ณด์ง€ ์•Š์€ ์นธ ์กด์žฌ
        d[nx][ny] = 1
        x = nx
        y = ny
        count += 1
        turn_time = 0
        continue
    else : # ๊ฐ€๋ณด์ง€ ์•Š์€ ์นธ์ด ์ •๋ฉด์— ์—†๊ฑฐ๋‚˜ ๋ฐ”๋‹ค์ธ ๊ฒฝ์šฐ
        turn_time += 1
    
    if turn_time == 4 :
        nx = x - dx[direction]
        ny = y - dy[direction]
        if array[nx][ny] == 0:
            x = nx
            y = ny
        else : break
        turn_time = 0

print(count)

์ฐธ๊ณ ์ž๋ฃŒ : ์ด๊ฒƒ์ด ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ๋‹ค (๋‚˜๋™๋นˆ ์ €)