์ฐธ๊ณ ์๋ฃ: ์ด๊ฒ์ด ์ฝ๋ฉ ํ ์คํธ๋ค with ํ์ด์ฌ
๊ตฌํ
๋จธ๋ฆฟ์์ ์๋ ์๊ณ ๋ฆฌ์ฆ์ ์์ค ์ฝ๋๋ก ๋ฐ๊พธ๋ ๊ณผ์
problem - thinking - solution
์์ 1 - ์ํ์ข์ฐ
์ฌํ๊ฐ A๋ N x N ํฌ๊ธฐ์ ์ ์ฌ๊ฐํ ๊ณต๊ฐ ์์ ์ ์๋ค. ์ด ๊ณต๊ฐ์ 1 x 1 ํฌ๊ธฐ์ ์ ์ฌ๊ฐํ์ผ๋ก ๋๋์ด์ ธ์๋ค. ๊ฐ์ฅ ์ผ์ชฝ ์ ์ขํ๋ (1,1) ์ด๋ฉฐ, ๊ฐ์ฅ ์ค๋ฅธ์ชฝ ์๋ ์ขํ๋ (N,N)์ ํด๋นํ๋ค. ์ฌํ๊ฐ A๋ ์, ํ, ์ข, ์ฐ ๋ฐฉํฅ์ผ๋ก ์ด๋ํ ์ ์์ผ๋ฉฐ, ์์ ์ขํ๋ ํญ์ (1,1)์ด๋ค. ์ฐ๋ฆฌ ์์๋ ์ฌํ๊ฐ A๊ฐ ์ด๋ํ ๊ณํ์ด ์ ํ ๊ณํ์๊ฐ ๋์ฌ ์๋ค.
๋ค์์ N = 5์ธ ์ง๋์ ๊ณํ์
R → R → R → U → D → D
(1,1) | (1,2) | (1,3) | (1,4) | (1,5) |
(2,1) | (2,2) | (2,3) | (2,4) | (2,5) |
(3,1) | (3,2) | (3,3) | (3,4) | (3,5) |
(4,1) | (4,2) | (4,3) | (4,4) | (4,5) |
(5,1) | (5,2) | (5,3) | (5,4) | (5,5) |
โ ๊ณํ์๊ฐ ์ฃผ์ด์ก์ ๋ ์ฌํ๊ฐ A๊ฐ ์ต์ข ์ ์ผ๋ก ๋์ฐฉํ ์ง์ ์ ์ขํ๋ฅผ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ
- ์ฒซ์งธ ์ค์ ๊ณต๊ฐ์ ํฌ๊ธฐ๋ฅผ ๋ํ๋ด๋ N์ด ์ฃผ์ด์ง๋ค. (1 ≤ N ≤ 100)
- ๋์งธ ์ค์ ์ฌํ๊ฐ A๊ฐ ์ด๋ํ ๊ณํ์ ๋ด์ฉ์ด ์ฃผ์ด์ง๋ค. (1 ≤ ์ด๋ ํ์ ≤ 100)
- ์ฒซ์งธ ์ค์ ์ฌํ๊ฐ A๊ฐ ์ต์ข ์ ์ผ๋ก ๋์ฐฉํ ์ง์ ์ ์ขํ (X, Y)๋ฅผ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถํ์ฌ ์ถ๋ ฅํ๋ค.
# N ์
๋ ฅ๋ฐ๊ธฐ
n = int(input())
x, y = 1, 1
plan = input().split()
dx = {'L':0, 'R':0, 'U':-1, 'D':1}
dy = {'L':-1, 'R':1, 'U':0, 'D':0}
for i in plan:
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)
# N ์
๋ ฅ๋ฐ๊ธฐ
n = int(input())
x, y = 1, 1
plan = input().split()
dx = {'L':0, 'R':0, 'U':-1, 'D':1}
dy = {'L':-1, 'R':1, 'U':0, 'D':0}
for i in plan:
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์ด ํ๋๋ผ๋ ํฌํจ๋๋ ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค. ์๋ฅผ ๋ค์ด 1์ ์ ๋ ฅํ์ ๋ ๋ค์์ 3์ด ํ๋๋ผ๋ ํฌํจ๋์ด ์์ผ๋ฏ๋ก ์ธ์ด์ผ ํ๋ ์๊ฐ์ด๋ค.
- 00์ 00๋ถ 03์ด
- 00์ 13๋ถ 30์ด
๋ฐ๋ฉด์ ๋ค์์ 3์ด ํ๋๋ ํฌํจ๋์ด ์์ง ์์ผ๋ฏ๋ก ์ธ๋ฉด ์ ๋๋ ์๊ฐ์ด๋ค.
- 00์ 02๋ถ 55์ด
- 01์ 27๋ถ 45์ด
- ์ฒซ์งธ ์ค์ ์ ์ N์ด ์ ๋ ฅ๋๋ค. (0 ≤ N ≤ 23)
- 00์ 00๋ถ 00์ด๋ถํฐ N์ 59๋ถ 59์ด๊น์ง์ ๋ชจ๋ ์๊ฐ ์ค์์ 3์ด ํ๋๋ผ๋ ํฌํจ๋๋ ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ์ถ๋ ฅํ๋ค.
n = int(input())
cnt = 0
for i in range(n+1):
for j in range(60):
for k in range(60):
# ์๊ฐ์ ๋ฌธ์์ด๋ก ๋ฐ๊พผ ํ '3'์ด ํฌํจ๋์๋์ง ํ์ธ
if '3' in str(i) + str(j) + str(k):
cnt += 1
print(cnt)
์์ค์ ๋์ดํธ
# ํ์ฌ ๋์ดํธ์ ์์น ์
๋ ฅ๋ฐ๊ธฐ
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)]
# 8๊ฐ์ง ๋ฐฉํฅ์ ๋ํ์ฌ ๊ฐ ์์น๋ก ์ด๋์ด ๊ฐ๋ฅํ์ง ํ์ธ
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)
๊ฒ์ ๊ฐ๋ฐ
# 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)
'๐ฆ๐ฑ๐ฌ๐ด๐ท๐ฎ๐น๐ญ๐ฒ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ด์ฝํ ] ๊ทธ๋ฆฌ๋(Greedy) (0) | 2023.02.09 |
---|