[TIL #30] 30์ผ์ฐจ ์˜ค๋Š˜์˜ ๊ณต๋ถ€ (2023.04.04 ํ™”)

2023. 4. 7. 11:32ใ†Today I Learned

TIL 2023.04.03 ๐Ÿฃ

์˜ค๋Š˜ ๋ฐฐ์šด ๊ฒƒ ๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ป

React

  • 'ํ•œ์ž… ํฌ๊ธฐ๋กœ ์ž˜๋ผ๋จน๋Š” ๋ฆฌ์•กํŠธ' ์„น์…˜ 6 ์ˆ˜๊ฐ•์„ ์‹œ์ž‘ํ–ˆ๋‹ค. ๋“œ๋””์–ด ํ™”๋ฉด์„ ๋งŒ๋“ค๊ธฐ ์‹œ์ž‘ํ–ˆ๋Š”๋ฐ ์žฌ๋ฏธ์žˆ๋‹ค. ์ต์ˆ™ํ•˜๋ฉด์„œ๋„ ๋‚ฏ์„  ๋ฌธ๋ฒ•๋“ค์ด ์ƒˆ๋กญ๊ณ , ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋งŒ๋“ค์–ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ด ์ƒ์‚ฐ์„ฑ์ด๋‚˜ ๊ฐ€๋…์„ฑ ๋“ฑ ์—ฌ๋Ÿฌ๋ชจ๋กœ ์ข‹๋‹ค.
  • Node.js ๊ธฐ์ดˆ ๋ถ€๋ถ„ ์ˆ˜๊ฐ•ํ•œ ๋‚ด์šฉ์„ ํฌ์ŠคํŒ…ํ–ˆ๋‹ค.

2023.04.04 - [๊ฐœ๋ฐœ๊ณต๋ถ€ ๊ธฐ๊ฐ•์žก์ž/React | JavaScript | NodeJS] - [React] Node.js ๊ธฐ์ดˆ (๋ชจ๋“ˆ๋งŒ๋“ค๊ธฐ/NPM/randomcolor ์˜ˆ์ œ)

 

[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])

์ถ”๊ฐ€์ ์œผ๋กœ ํ•˜๋ฉด ์ข‹์„ ๊ฒƒ

๊ธฐํƒ€ ๐Ÿค”