Notice
Recent Posts
Link
Today
Total
10-06 00:17
๊ด€๋ฆฌ ๋ฉ”๋‰ด

dingdong coding

[ ์ด๊ฒƒ์ด ์ฝ”๋”ฉํ…Œ์ŠคํŠธ๋‹ค with ํŒŒ์ด์ฌ ] Implementaion ๋ณธ๋ฌธ

๐Ÿ”ตCoding Test/Algorithm

[ ์ด๊ฒƒ์ด ์ฝ”๋”ฉํ…Œ์ŠคํŠธ๋‹ค with ํŒŒ์ด์ฌ ] Implementaion

๐Ÿถ ๊ฐœ๋ฐœ๊ฐœ๋ฐœ ๐Ÿพ 2022. 2. 25. 14:34

๊ตฌํ˜„ (Implementation)

: ํ’€์ด๋ฅผ ๋– ์˜ฌ๋ฆฌ๋Š” ๊ฒƒ์€ ์‰ฝ์ง€๋งŒ ์†Œ์Šค์ฝ”๋“œ๋กœ ์˜ฎ๊ธฐ๊ธฐ ์–ด๋ ค์šด ๋ฌธ์ œ 

 

- ์ผ๋ฐ˜์ ์œผ๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ์—์„œ์˜ 2์ฐจ์› ๊ณต๊ฐ„์€ ํ–‰๋ ฌ(Matrix)์˜ ์˜๋ฏธ๋กœ ์‚ฌ์šฉ

→ ์—ด(Column) 

↓ ํ–‰(Row)

 

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

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

3, ๋ฌธ์ž์—ด ์žฌ์ •๋ ฌ (์˜ˆ์ œ Youtube ๊ฐ•์˜)

4. ์™•์‹ค์˜ ๋‚˜์ดํŠธ (์‹ค์ „๋ฌธ์ œ)

5. ๊ฒŒ์ž„๊ฐœ๋ฐœ (์‹ค์ „๋ฌธ์ œ)

 

[ ์˜ˆ์ œ ] ์ƒํ•˜์ขŒ์šฐ

โ€ป ๋ฌธ์ œ

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

๊ณ„ํš์„œ์—๋Š” ํ•˜๋‚˜์˜ ์ค„์— ๋„์–ด์“ฐ๊ธฐ๋ฅผ ๊ธฐ์ค€์œผ๋กœ L, R, U, D ์ค‘ ํ•˜๋‚˜์˜ ๋ฌธ์ž๊ฐ€ ๋ฐ˜๋ณต์ ์œผ๋กœ ์ ํ˜€์žˆ๋‹ค.
๊ฐ ๋ฌธ์ž์˜ ์˜๋ฏธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค

 

L: ์™ผ์ชฝ์œผ๋กœ ํ•œ ์นธ ์ด๋™
R: ์˜ค๋ฅธ์ชฝ์œผ๋กœ ํ•œ ์นธ ์ด๋™
U: ์œ„๋กœ ํ•œ ์นธ ์ด๋™
D: ์•„๋ž˜๋กœ ํ•œ ์นธ ์ด๋™

 

์ด๋•Œ ์—ฌํ–‰๊ฐ€ A๊ฐ€ N × N ํฌ๊ธฐ์˜ ์ •์‚ฌ๊ฐํ˜• ๊ณต๊ฐ„์„ ๋ฒ—์–ด๋‚˜๋Š” ์›€์ง์ž„์€ ๋ฌด์‹œ๋œ๋‹ค ์˜ˆ๋ฅผ ๋“ค์–ด (1, 1)์˜ ์œ„์น˜์—์„œ L ํ˜น์€ U๋ฅผ ๋งŒ๋‚˜๋ฉด ๋ฌด์‹œ๋œ๋‹ค ๋‹ค์Œ์€ N = 5์ธ ์ง€๋„์™€ ๊ณ„ํš์ด๋‹ค

 

์ž…๋ ฅ์กฐ๊ฑด

- ์ฒซ์งธ ์ค„์— ๊ณต๊ฐ„์˜ ํฌ๊ธฐ N์ด ์ฃผ์–ด์ง

- ๋‘˜์งธ ์ค„์— ์—ฌํ–‰๊ฐ€ A๊ฐ€ ์ด๋™ํ•  ๊ณ„ํš์„œ ๋‚ด์šฉ์ด ์ฃผ์–ด์ง 

 

์ถœ๋ ฅ์กฐ๊ฑด 

- ์ฒซ์งธ ์ค„์— ์—ฌํ–‰๊ฐ€ A๊ฐ€ ์ตœ์ข…์ ์œผ๋กœ ๋„์ฐฉํ•  ์ง€์ ์˜ ์ขŒํ‘œ ์ถœ๋ ฅ 

# ์ƒํ•˜์ขŒ์šฐ ์ฒ˜์Œ ํ’€์ด
n = int(input())

location = list((input().split()))

x, y = 1, 1

for i in range(len(location)):
    if (y > 1 and location[i] == 'L'):
        y -= 1
    elif (y < n and location[i] == 'R'):
        y += 1
    elif (x > 1 and location[i] == 'U'):
        x -= 1
    elif (x < n and location[i] == 'D'):
        x += 1

print(x, y)

--- ํ’€์ด ํ•ด์„ค ---

# ์ƒํ•˜์ขŒ์šฐ ๋‹ต์•ˆ ์˜ˆ์‹œ
n = int(input())
x, y = 1, 1
plans = input().split()

# L, R, U, D์— ๋”ฐ๋ฅธ ์ด๋™ ๋ฐฉํ–ฅ
dx = [0, 0, -1, 1]
dy = [-1, 1, 0, 0]
move_types = ['L', 'R', 'U', 'D']

# ์ด๋™ ๊ณ„ํš์„ ํ•˜๋‚˜์”ฉ ํ™•์ธ
for plan in plans:
    # ์ด๋™ ํ›„ ์ขŒํ‘œ ๊ตฌํ•˜๊ธฐ
    for i in range(len(move_types)):
        if plan == move_types[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)

์ž…๋ ฅ   

5

R R R U D D

 

์ถœ๋ ฅ   

3 4

 

[ ์˜ˆ์ œ ] ์‹œ๊ฐ

โ€ป ๋ฌธ์ œ

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

n = int(input())

count = 0

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

print(count)

์ž…๋ ฅ  

5

 

์ถœ๋ ฅ  

11475

 

[ ์˜ˆ์ œ ] ๋ฌธ์ž์—ด ์žฌ์ •๋ ฌ

โ€ป ๋ฌธ์ œ

์•ŒํŒŒ๋ฒณ ๋Œ€๋ฌธ์ž์™€ ์ˆซ์ž(0~9)๋กœ๋งŒ ๊ตฌ์„ฑ๋œ ๋ฌธ์ž์—ด์ด ์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค.

์ด๋•Œ ๋ชจ๋“  ์•ŒํŒŒ๋ฒณ์„ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜์—ฌ ์ด์–ด์„œ ์ถœ๋ ฅํ•œ ๋’ค์—, ๊ทธ ๋’ค์— ๋ชจ๋“  ์ˆซ์ž๋ฅผ ๋”ํ•œ ๊ฐ’์„ ์ด์–ด์„œ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

# ์ฒ˜์Œ ํ‘ผ ํ’€์ด

s = input()
alpha = []
num = []
sum = 0
han = ''

for i in range(len(s)):
    if s[i].isalpha():
        alpha.append(s[i])
        alpha.sort()
    elif s[i].isdigit():
        num.append(s[i])

for digit in num:
    sum += int(digit)

for a in alpha:
    han += str(a)

print(han+str(sum))

--- ํ’€์ด ํ•ด์„ค ---

data = input()
result = []
value = 0

# ๋ฌธ์ž๋ฅผ ํ•˜๋‚˜์”ฉ ํ™•์ธํ•˜๋ฉฐ
for x in data:
    # ์•ŒํŒŒ๋ฒณ์ธ ๊ฒฝ์šฐ ๊ฒฐ๊ณผ ๋ฆฌ์ŠคํŠธ์— ์‚ฝ์ž…
    if x.isalpha():
        result.append(x)
    # ์ˆซ์ž๋Š” ๋”ฐ๋กœ ๋”ํ•˜๊ธฐ
    else:
        value += int(x)

# ์•ŒํŒŒ๋ฒณ์„ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ
result.sort()

# ์ˆซ์ž๊ฐ€ ํ•˜๋‚˜๋ผ๋„ ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ ๊ฐ€์žฅ ๋’ค์— ์‚ฝ์ž…
if value != 0:
    result.append(str(value))

# ์ตœ์ข… ๊ฒฐ๊ณผ ์ถœ๋ ฅ (๋ฆฌ์ŠคํŠธ๋ฅผ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ์ถœ๋ ฅ)
print(''.join(result))

์ž…๋ ฅ 

K1KA5CB7

 

์ถœ๋ ฅ

ABCKK13

 

[ ์‹ค์ „๋ฌธ์ œ ] ์™•์‹ค์˜ ๋‚˜์ดํŠธ ** ๋‹ค์‹œ ํ’€์–ด๋ณด๊ธฐ **

โ€ป ๋ฌธ์ œ

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

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

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

 

์ž…๋ ฅ์กฐ๊ฑด

- ์ฒซ์งธ ์ค„์— 8x8 ์ขŒํ‘œ ํ‰๋ฉด์ƒ์—์„œ ํ˜„์žฌ ๋‚˜์ดํŠธ๊ฐ€ ์œ„์น˜ํ•œ ๊ณณ์˜ ์ขŒํ‘œ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋‘ ๋ฌธ์ž๋กœ ๊ตฌ์„ฑ๋œ ๋ฌธ์ž์—ด์ด ์ž…๋ ฅ๋œ๋‹ค.

- ์ž…๋ ฅ ๋ฌธ์ž๋Š” a1 ์ฒ˜๋Ÿผ ์—ด๊ณผ ํ–‰์œผ๋กœ ์ด๋ค„์ง„๋‹ค.

 

์ถœ๋ ฅ์กฐ๊ฑด 

- ์ฒซ์งธ ์ค„์— ๋‚˜์ดํŠธ๊ฐ€ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•˜์‹œ์˜ค.

 

--- ํ’€์ด ํ•ด์„ค ---

n = 8
location = input()
column = int(ord(location[0]) - int(ord('a'))) + 1
row = int(location[1])

steps = [(-2, -1), (-1, -2), (1, -2), (2, -1), (2, 1), (1, 2), (-1, 2), (-2, 1)]

result = 0
for step in steps:
    next_column = column + step[1]
    next_row = row + step[0]
    if next_column >= 1 and next_row >= 1 and next_column <= 8 and next_row <= 8:
        result += 1

print(result)

์ž…๋ ฅ 

a1

 

์ถœ๋ ฅ

2

 

[ ์‹ค์ „๋ฌธ์ œ ] ๊ฒŒ์ž„๊ฐœ๋ฐœ ** ๋‹ค์‹œ ํ’€์–ด๋ณด๊ธฐ **

โ€ป ๋ฌธ์ œ

ํ˜„๋ฏผ์ด๋Š” ๊ฒŒ์ž„ ์บ๋ฆญํ„ฐ๊ฐ€ ๋งต ์•ˆ์—์„œ ์›€์ง์ด๋Š” ์‹œ์Šคํ…œ์„ ๊ฐœ๋ฐœ ์ค‘์ด๋‹ค. ์บ๋ฆญํ„ฐ๊ฐ€ ์žˆ๋Š” ์žฅ์†Œ๋Š” 1 X 1 ํฌ๊ธฐ์˜ ์ •์‚ฌ๊ฐํ˜•์œผ๋กœ ์ด๋ค„์ง„ N X M ํฌ๊ธฐ์˜ ์ง์‚ฌ๊ฐํ˜•์œผ๋กœ, ๊ฐ๊ฐ์˜ ์นธ์€ ์œก์ง€ ๋˜๋Š” ๋ฐ”๋‹ค์ด๋‹ค. ์บ๋ฆญํ„ฐ๋Š” ๋™์„œ๋‚จ๋ถ ์ค‘ ํ•œ ๊ณณ์„ ๋ฐ”๋ผ๋ณธ๋‹ค.

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

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

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

 

์ž…๋ ฅ์กฐ๊ฑด

- ์ฒซ์งธ ์ค„์— ๋งต์˜ ์„ธ๋กœ ํฌ๊ธฐ N๊ณผ ๊ฐ€๋กœ ํฌ๊ธฐ M์„ ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ์ž…๋ ฅํ•œ๋‹ค. (3 <= N, M <= 50)

- ๋‘˜์งธ ์ค„์— ๊ฒŒ์ž„ ์บ๋ฆญํ„ฐ๊ฐ€ ์žˆ๋Š” ์นธ์˜ ์ขŒํ‘œ (A, B)์™€ ๋ฐ”๋ผ๋ณด๋Š” ๋ฐฉํ–” d๊ฐ€ ๊ฐ๊ฐ ์„œ๋กœ ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ์ฃผ์–ด์ง„๋‹ค. ๋ฐฉํ–ฅ d์˜ ๊ฐ’์œผ๋กœ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด 4๊ฐ€์ง€๊ฐ€ ์กด์žฌํ•œ๋‹ค.

 

0 : ๋ถ์ชฝ
1 : ๋™์ชฝ
2 : ๋‚จ์ชฝ
3 : ์„œ์ชฝ

 

- ์…‹์งธ ์ค„๋ถ€ํ„ฐ ๋งต์ด ์œก์ง€์ธ์ง€ ๋ฐ”๋‹ค์ธ์ง€์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. N๊ฐœ์˜ ์ค„์— ๋งต์˜ ์ƒํƒœ๊ฐ€ ๋ถ์ชฝ๋ถ€ํ„ฐ ๋‚จ์ชฝ ์ˆœ์„œ๋Œ€๋กœ, ๊ฐ ์ค„์˜ ๋ฐ์ดํ„ฐ๋Š” ์„œ์ชฝ๋ถ€ํ„ฐ ๋™์ชฝ ์ˆœ์„œ๋Œ€๋กœ ์ฃผ์–ด์ง„๋‹ค. ๋งต์˜ ์™ธ๊ฐ์€ ํ•ญ์ƒ ๋ฐ”๋‹ค๋กœ ๋˜์–ด ์žˆ๋‹ค.

 

0 : ์œก์ง€
1 : ๋ฐ”๋‹ค

 

์ฒ˜์Œ์— ๊ฒŒ์ž„ ์บ๋ฆญํ„ฐ๊ฐ€ ์œ„์น˜ํ•œ ์นธ์˜ ์ƒํƒœ๋Š” ํ•ญ์ƒ ์œก์ง€์ด๋‹ค.

 

์ถœ๋ ฅ์กฐ๊ฑด 

- ์ฒซ์งธ ์ค„์— ์ด๋™์„ ๋งˆ์นœ ํ›„ ์บ๋ฆญํ„ฐ๊ฐ€ ๋ฐฉ๋ฌธํ•œ ์นธ์˜ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

 

--- ํ’€์ด ํ•ด์„ค ---

# N, M์„ ๊ณต๋ฐฑ์„ ๊ธฐ์ค€์œผ๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ์ž…๋ ฅ๋ฐ›๊ธฐ
n, m = map(int, input().split())

# ๋ฐฉ๋ฌธํ•œ ์œ„์น˜๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ ๋งต์„ ์ƒ์„ฑํ•˜์—ฌ 0์œผ๋กœ ์ดˆ๊ธฐํ™”
d = [[0] * m for _ in range(n)]
# ํ˜„์žฌ ์บ๋ฆญํ„ฐ์˜ X ์ขŒํ‘œ, Y ์ขŒํ‘œ, ๋ฐฉํ–ฅ์„ ์ž…๋ ฅ๋ฐ›๊ธฐ
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)

์ž…๋ ฅ  

4 4
1 1 0 
1 1 1 1
1 0 0 1
1 1 0 1
1 1 1 1

 

์ถœ๋ ฅ   

3

 

Comments