๊ฐœ๋ฐœ์ž HOON
๐Ÿ› HOON DEVLog
๊ฐœ๋ฐœ์ž HOON
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๐Ÿ˜Ž ์ „์ฒด ์นดํ…Œ๊ณ ๋ฆฌ (137)
    • ๐Ÿ“ ์‹ ์ž… ์ธํ„ฐ๋ทฐ ์ค€๋น„ (7)
    • ๐Ÿฆ” ์ทจ์—…์ค€๋น„ ๊ธฐ๋ก (7)
    • โ˜• ์ž๋ฐ” : JAVA (5)
    • ๐Ÿ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ๋Œ€๋น„ : PS (80)
    • ๐ŸŒฑ ๋ฐฑ์—”๋“œ : Backend (13)
    • ๐Ÿงช ์ปดํ“จํ„ฐ๊ณผํ•™ : CS (11)
    • ๐Ÿ—‚ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค : DB (1)
    • ๐Ÿƒ‍โ™‚๏ธ DEVLOG (8)
    • โš™๏ธ Trouble Shooting (5)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ
  • GitHub
  • Resume

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ

hELLO ยท Designed By ์ •์ƒ์šฐ.
๊ฐœ๋ฐœ์ž HOON

๐Ÿ› HOON DEVLog

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์—ฌํ–‰๊ฒฝ๋กœ (level3, python)
๐Ÿ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ๋Œ€๋น„ : PS

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์—ฌํ–‰๊ฒฝ๋กœ (level3, python)

2023. 4. 11. 00:05

 

 

๐Ÿค” ํ’€์ด ์ฝ”๋“œ

 

from collections import deque
import copy

def bfs(start, ways, visited, n):
    queue = deque()
    queue.append([start, start, visited])
    candidate = []
    
    while queue:
        now, log, visit = queue.popleft()
        if len(log) == 4 * n - 1:
            candidate.append(log)
            continue
        for next in ways[now]:
            visited_key = now + next
            if visit[visited_key] != 0:
                visit[visited_key] -= 1
                queue.append([next, log + " " + next, copy.deepcopy(visit)])
                visit[visited_key] += 1
        
    return sorted(candidate, key = lambda x : x)[0].split(" ")
    
def solution(tickets):
    ways = {}
    visited = {}
    
    for way in tickets:
        start, end = way
        visited_key = start + end
        if visited_key in visited:
            visited[visited_key] += 1
        else:
            visited[visited_key] = 1
            
        if start not in ways:
            ways[start] = [end]
        else:
            ways[start].append(end)
        
        if end not in ways:
            ways[end] = []
    
    return bfs("ICN", ways, visited, len(tickets)+1)

 

 

๐Ÿค” ๋ฌธ์ œ ํ’€์ด

 

์‰ฌ์šด ๋ฌธ์ œ์ธ์ค„ ์•Œ์•˜์œผ๋‚˜, ๊ณ ๋ คํ•ด์•ผ ํ•  ์š”์†Œ๊ฐ€ ์ƒ๊ฐ๋ณด๋‹ค ๋งŽ์•„์„œ ์• ๋ฅผ ๋จน์—ˆ๋˜ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

๋‹ค์Œ์€ ๋†“์น˜๊ธฐ ์‰ฌ์šด ์กฐ๊ฑด์ž…๋‹ˆ๋‹ค.

- ๊ฐ™์€ A -> Bํ–‰ ํ‹ฐ์ผ“์ด ์—ฌ๋Ÿฌ ์žฅ์ธ ๊ฒฝ์šฐ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค. ๋ฌธ์ œ์˜ ์กฐ๊ฑด ์–ด๋””์—๋„ ์ด๋Ÿฌํ•œ ๊ฒฝ์šฐ๊ฐ€ ์—†๋‹ค๋Š” ์ œํ•œ์ด ์—†๋‹ค.

- visited ์ฒ˜๋ฆฌ๋ฅผ ํ•  ๋•Œ, ๊ฐ ๋…ธ๋“œ๋ฅผ ๋ฐฉ๋ฌธํ•œ ์—ฌ๋ถ€๋ฅผ ์ฒดํฌํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ํ•ด๋‹น ํ‹ฐ์ผ“์„ ์†Œ๋น„ํ–ˆ๋А๋ƒ?์˜ ๊ด€์ ์œผ๋กœ ์ฒดํฌํ•ด์•ผ ํ•จ. ๊ฐ™์€ ์žฅ์†Œ๋ฅผ ์—ฌ๋Ÿฌ๋ฒˆ ๋ฐฉ๋ฌธํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ.

 

์ €๋Š” BFS๋ฅผ ํ™œ์šฉํ•ด์„œ ๋ฌธ์ œ๋ฅผ ํ’€์ดํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ฐฉ๋ฌธ ์žฅ์†Œ๊ฐ€ ์•„๋‹Œ, ํ‹ฐ์ผ“์„ ๊ธฐ์ค€์œผ๋กœ visited๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด, visited_key๋ฅผ ๋งŒ๋“ค์–ด์„œ ๊ด€๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค.

ex) "AAA" -> "BBB"๋ผ๋ฉด, visited์˜ key๋Š” "AAABBB"

 

๊ทธ ํ›„, ticket์˜ ๊ฐœ์ˆ˜ + 1๊ฐœ์˜ ๋…ธ๋“œ๊ฐ€ ๋กœ๊ทธ์— ์ฐํžˆ๊ณ , ๊ฐ ๋…ธ๋“œ๋Š” ๊ธธ์ด๊ฐ€ 3์ธ ๋ฌธ์ž์—ด์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋“  ํ‹ฐ์ผ“์„ ์†Œ๋ชจํ•œ ํ›„ ๋กœ๊ทธ์˜ ์ด ๊ธธ์ด(๊ณต๋ฐฑ ํฌํ•จ)๋Š”, 4n - 1์ด ๋ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์กฐ๊ฑด์„ ์ ์šฉํ•ด ์ •๋‹ต ํ›„๋ณด๊ตฐ ๋ฆฌ์ŠคํŠธ์— ์‚ฝ์ž…ํ•ฉ๋‹ˆ๋‹ค.

 

visit ๋”•์…”๋„ˆ๋ฆฌ์™€ deepcopy๋ฅผ ํ™œ์šฉํ•ด์„œ, ๊ฐ ์—ฌํ–‰ ๋ฃจํŠธ๋งˆ๋‹ค ๋ฐฉ๋ฌธ ์—ฌ๋ถ€๋ฅผ ๋‹ค๋ฅด๊ฒŒ ๊ด€๋ฆฌํ•˜๋„๋ก ํ–ˆ์Šต๋‹ˆ๋‹ค.

for๋ฌธ์˜ ํŠน์„ฑ์ƒ append ์•ž๊ณผ ๋’ค์— ๋ฐฉ๋ฌธ ์ฒ˜๋ฆฌ ์—ฌ๋ถ€ ์กฐ์ •์„ ์œ„ํ•ด 1์„ ๋นผ์ฃผ๊ณ , ๋”ํ•ด์ฃผ๋Š” ์—ฐ์‚ฐ์„ ์‚ฝ์ž…ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋’ค์—์„œ ๋”ํ•ด์ฃผ์ง€ ์•Š์œผ๋ฉด ๋‹ค์Œ for๋ฌธ ์‹คํ–‰์— ์˜ํ–ฅ์ด ๊ฐ€๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

 

์ตœ์ข…์ ์œผ๋กœ ์™„์„ฑ๋œ ๋กœ๊ทธ์˜ ํ›„๋ณด๋“ค์„ sortingํ•œ ๋‹ค์Œ, ๊ฐ€์žฅ ์ฒซ ์›์†Œ๋ฅผ ๊ณต๋ฐฑ์„ ๊ธฐ์ค€์œผ๋กœ split์„ ํ•œ๋‹ค๋ฉด ์ •๋‹ต์ด ๋ฉ๋‹ˆ๋‹ค.

 

์ €์ž‘์žํ‘œ์‹œ ๋น„์˜๋ฆฌ ๋™์ผ์กฐ๊ฑด (์ƒˆ์ฐฝ์—ด๋ฆผ)

'๐Ÿ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ๋Œ€๋น„ : PS' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๊ฑฐ๋ฆฌ๋‘๊ธฐ ํ™•์ธํ•˜๊ธฐ (level2, python)  (0) 2023.04.11
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๋ฉ€์ฉกํ•œ ์‚ฌ๊ฐํ˜• (level2, python)  (0) 2023.04.11
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๋””์Šคํฌ ์ปจํŠธ๋กค๋Ÿฌ (level3, python)  (0) 2023.04.10
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์ „๋ ฅ๋ง์„ ๋‘˜๋กœ ๋‚˜๋ˆ„๊ธฐ (level2, python)  (0) 2023.04.10
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๋’ค์— ์žˆ๋Š” ํฐ ์ˆ˜ ์ฐพ๊ธฐ (level2, python)  (0) 2023.04.10
    '๐Ÿ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ๋Œ€๋น„ : PS' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๊ฑฐ๋ฆฌ๋‘๊ธฐ ํ™•์ธํ•˜๊ธฐ (level2, python)
    • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๋ฉ€์ฉกํ•œ ์‚ฌ๊ฐํ˜• (level2, python)
    • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๋””์Šคํฌ ์ปจํŠธ๋กค๋Ÿฌ (level3, python)
    • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์ „๋ ฅ๋ง์„ ๋‘˜๋กœ ๋‚˜๋ˆ„๊ธฐ (level2, python)
    ๊ฐœ๋ฐœ์ž HOON
    ๊ฐœ๋ฐœ์ž HOON
    ์ข‹์€ ๋ฐฑ์—”๋“œ ์—”์ง€๋‹ˆ์–ด๊ฐ€ ๋˜๊ธฐ ์œ„ํ•œ ๊ธฐ๋ก์„ ๋ชจ์•˜์Šต๋‹ˆ๋‹ค. # ์ฃผ๋‹ˆ์–ด # ๋ฐฑ์—”๋“œ # ๊ฐœ๋ฐœ์ž

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”