[TIL #30] 30์ผ์ฐจ ์ค๋์ ๊ณต๋ถ (2023.04.04 ํ)
2023. 4. 7. 11:32ใToday I Learned

TIL 2023.04.03 ๐ฃ
์ค๋ ๋ฐฐ์ด ๊ฒ ๐ฉ๐ป๐ป
React
- 'ํ์
ํฌ๊ธฐ๋ก ์๋ผ๋จน๋ ๋ฆฌ์กํธ' ์น์
6 ์๊ฐ์ ์์ํ๋ค. ๋๋์ด ํ๋ฉด์ ๋ง๋ค๊ธฐ ์์ํ๋๋ฐ ์ฌ๋ฏธ์๋ค. ์ต์ํ๋ฉด์๋ ๋ฏ์ ๋ฌธ๋ฒ๋ค์ด ์๋กญ๊ณ , ์ปดํฌ๋ํธ๋ฅผ ๋ง๋ค์ด์ ์ฌ์ฉํ ์ ์๋ค๋ ์ ์ด ์์ฐ์ฑ์ด๋ ๊ฐ๋
์ฑ ๋ฑ ์ฌ๋ฌ๋ชจ๋ก ์ข๋ค.
- Node.js ๊ธฐ์ด ๋ถ๋ถ ์๊ฐํ ๋ด์ฉ์ ํฌ์คํ
ํ๋ค.
[React] Node.js ๊ธฐ์ด (๋ชจ๋๋ง๋ค๊ธฐ/NPM/randomcolor ์์ )
์ด์ ํ ๊ฐ์ฌ๋์ ๊ฐ์ 'ํ์ ํฌ๊ธฐ๋ก ์๋ผ๋จน๋ ๋ฆฌ์กํธ'๋ฅผ ์๊ฐํ๊ณ ์์ต๋๋ค. Udemy์์ ์งํํ๊ณ ์๋ ๋ฆฌ์กํธ ์ฑ๋ฆฐ์ง์ ์ฐธ์ฌํ๋ฉฐ 2์ฃผ์ฐจ ๋ฏธ์ ์ผ๋ก "์น์ 4 Node.js"์ ์๊ฐํ ๋ด์ฉ์ ์ ๋ฆฌํฉ๋๋ค. ๐ N
devum.tistory.com
์๊ณ ๋ฆฌ์ฆ
- ๋ฐฑ์ค 16928 : DP ๋ก ํ ์ ์์ ๊ฒ ๊ฐ์์ DP ๋ก ํ์๋๋ฐ, ์์ ์ ๋ํ ๋ต์ ๋ง๊ฒ ๋์์ผ๋ ๋ฑ์ด ์๋ ์นธ์ ๊ฒฝ์ฐ ํ๋ ์ด์ด๊ฐ ํํดํด์ผํ๊ธฐ ๋๋ฌธ์ ์ด ๋ถ๋ถ์ ์ด๋ป๊ฒ ์ฒ๋ฆฌํด์ผํ ์ง ๋ชจ๋ฅด๊ฒ ์ด์ ๊ฒฐ๊ตญ ๊ตฌ๊ธ๋ง์ ํ์ ๋น๋ ธ๋ค.
BFS ๋ก ํ์ํ๋ฉด ๋๋ ๊ฐ๋จํ ๋ฌธ์ ์๊ณ ,,
์ฌ๋ค๋ฆฌ๋ ๋ฑ์ ๋ง๋ ๊ฒฝ์ฐ์ ๊ฒฝ๋ก๋ง ์ ์ค์ ํด์ค์ 100๋ฒ์งธ ์นธ์ ๋์ฐฉํ๋ count๋ฅผ ์ฐพ์ผ๋ฉด ๋๋ค.
import sys
from collections import deque
n, m = map(int, sys.stdin.readline().rstrip().split())
ladder = {}
snake = {}
for _ in range(n):
a, b = map(int, sys.stdin.readline().rstrip().split())
ladder[a] = b
for _ in range(m):
a, b = map(int, sys.stdin.readline().rstrip().split())
snake[a] = b
visited = [0] * 101
queue = deque()
queue.append(1)
while queue:
now = queue.popleft()
# 1 ~ 6 ์นธ ์ด๋
for i in range(1, 7):
pos_move = now + i # ์ด๋ ์์น
if pos_move > 100:
break
if ladder.get(pos_move):
pos_move = ladder[pos_move] # ์ฌ๋ค๋ฆฌ ํ๊ณ ์ด๋ํ ์์น
elif snake.get(pos_move):
pos_move = snake[pos_move]
if visited[pos_move]: # ์ด๋ฏธ ๋ฐฉ๋ฌธํ ๊ฒฝ์ฐ skip
continue
queue.append(pos_move)
visited[pos_move] = visited[now] + 1
print(visited[100])โ
- ๋ฐฑ์ค 10026 : ์ด๊ฒ๋ BFS ๋ฌธ์ , R_G_B ์ ๊ตฌ์ญ ๊ฐฏ์์ ์ ๋ก ์์ฝ์ด ๋ณผ ์ ์๋ ์ ๋
น์/B ๊ตฌ์ญ์ ๊ฐฏ์๋ฅผ ์ธ๋ฉด ๋๋ค.
์ ๋ก์์ฝ์ ๊ฒฝ์ฐ R ๊ณผ G ๋ฅผ ๊ฐ์ ๊ตฌ์ญ์ผ๋ก ๋ณด๊ธฐ ๋๋ฌธ์ R ์ด๊ฑฐ๋ G ์ธ ๊ฒฝ์ฐ ๊ฐ์ ๊ตฌ์ญ์ผ๋ก count ํ๋๋ก ํ๋ค.
-> ์ ๋ก์์ฝ์ ๊ตฌ์ญ์ count ํ๊ธฐ ์ ์ maps ๋ฐฐ์ด์ G ๊ฐ์ R๋ก ํต์ผํด์ count ํด๋ ๋ ๊ฒ ๊ฐ๋ค.
import sys
from collections import deque
n = int(sys.stdin.readline().rstrip())
maps = []
for _ in range(n):
maps.append(sys.stdin.readline().rstrip())
def bfs(i, j, visited, color):
dirs = [(-1, 0), (1, 0), (0, -1), (0, 1)]
queue = deque([(i, j)])
while queue:
x, y = queue.popleft()
for dx, dy in dirs:
nx = x + dx
ny = y + dy
if nx < 0 or nx >= n or ny < 0 or ny >= n:
continue
if visited[nx][ny] or maps[nx][ny] not in color:
continue
queue.append((nx, ny))
visited[nx][ny] = True
r_g_b = [[False] * n for _ in range(n)]
rg_b = [[False] * n for _ in range(n)]
cnt = [0, 0]
for i in range(n):
for j in range(n):
if not r_g_b[i][j]:
bfs(i, j, r_g_b, [maps[i][j]])
cnt[0] += 1
if not rg_b[i][j]: # ์ ๋ก ์์ฝ
if maps[i][j] in ['R', 'G']:
bfs(i, j, rg_b, ['R', 'G'])
else:
bfs(i, j, rg_b, ['B'])
cnt[1] += 1
print(cnt[0], cnt[1])
์ถ๊ฐ์ ์ผ๋ก ํ๋ฉด ์ข์ ๊ฒ
๊ธฐํ ๐ค
'Today I Learned' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[TIL #32] 32์ผ์ฐจ ์ค๋์ ๊ณต๋ถ (2023.04.07 ๊ธ) (0) | 2023.04.07 |
---|---|
[TIL #31] 31์ผ์ฐจ ์ค๋์ ๊ณต๋ถ (2023.04.05 ์) (0) | 2023.04.07 |
[TIL #29] 29์ผ์ฐจ ์ค๋์ ๊ณต๋ถ (2023.04.03 ์) (0) | 2023.04.03 |
[TIL #28] 28์ผ์ฐจ ์ค๋์ ๊ณต๋ถ (2023.04.02 ์ผ) (0) | 2023.04.03 |
[TIL #27] 27์ผ์ฐจ ์ค๋์ ๊ณต๋ถ (2023.04.01 ํ ) (0) | 2023.04.02 |