glowing713
Frontend-Deep-Dive
glowing713
전체 방문자
였늘
μ–΄μ œ
  • λΆ„λ₯˜ 전체보기 (97)
    • Languages (11)
      • JavaScript πŸ’› (3)
      • Python 🐍 (4)
      • Java β˜•οΈ (3)
      • Swift 🧑 (1)
    • Computer_Science (1)
      • Computer_Network πŸ•Έ (1)
    • Web_Frontend (4)
      • Vue.js (1)
    • Problem_Solving (76)
    • Server (1)
      • Spring πŸ€ (1)
    • AI (2)
      • NLP πŸ—£ (1)
      • AI_Math βž— (1)
    • κ°œλ°œν™˜κ²½ κΎΈλ―ΈκΈ° ✌ (1)
    • 생각정리 ✍🏻 (1)

λΈ”λ‘œκ·Έ 메뉴

  • πŸ§‘πŸ»β€πŸ’»Github

곡지사항

인기 κΈ€

νƒœκ·Έ

  • λ™μ κ³„νšλ²•
  • brute-force
  • 완전탐색
  • DP
  • BOJ
  • ps
  • Stack
  • Baekjoon
  • 카카였 기좜
  • boostcampaitech
  • 2019 카카였 개발자 겨울 인턴십
  • Algorithm
  • mst
  • c++
  • ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€
  • Java
  • 이뢄탐색
  • binary search
  • Python
  • bfs

졜근 λŒ“κΈ€

졜근 κΈ€

ν‹°μŠ€ν† λ¦¬

hELLO Β· Designed By μ •μƒμš°.
glowing713

Frontend-Deep-Dive

[BOJ] λ°±μ€€ 1697 μˆ¨λ°”κΌ­μ§ˆ / BFS
Problem_Solving

[BOJ] λ°±μ€€ 1697 μˆ¨λ°”κΌ­μ§ˆ / BFS

2021. 1. 7. 23:30

이미지λ₯Ό ν΄λ¦­ν•˜λ©΄ 문제 μ‚¬μ΄νŠΈλ‘œ μ΄λ™ν•©λ‹ˆλ‹€.

 

 

πŸ’­ 문제 이해

μˆ˜λΉˆμ΄λŠ” λ™μ‹œμ— -1, +1, *2 λΌλŠ” μ„Έ κ°€μ§€μ˜ 선택지 쀑 ν•˜λ‚˜λ₯Ό 골라 μ΄λ™ν•˜κ²Œ λœλ‹€.

μ΄λ™ν•˜λŠ” μ„Έ κ°€μ§€μ˜ 선택이 λ™μ‹œμ— 1초 μ”© μ¦κ°€ν•˜λ―€λ‘œ λ„ˆλΉ„ μš°μ„  탐색을 μ„ νƒν–ˆλ‹€.

 

μ£Όμ˜ν•΄μ•Όν•  점이 μžˆμ—ˆλ‹€.

 

1. (ν˜„μž¬ μœ„μΉ˜, κ±°κΈ°κΉŒμ§€ κ±Έλ¦° 초) λ₯Ό νŠœν”Œλ‘œ 큐에 μ €μž₯ν•΄μ„œ μ‚¬μš©

각 선택지가 μ΄λ™ν•˜λŠ” 방법에 따라 μ‹œκ°„μ΄ λ‹€λ₯΄λ―€λ‘œ, μ΄λ™ν•˜λŠ” 것에 따라 κ±Έλ¦° μ‹œκ°„μ„ 같이 λ³΄κ΄€ν–ˆλ‹€.

 

2. λ°©λ¬Έ 체크가 ν•„μˆ˜μ΄λ‹€.

λ°©λ¬Έν–ˆλ˜ 지점을 λ‹€μ‹œ λ°ŸλŠ” 것은 μ˜λ―Έμ—†λŠ” 것이닀.

μ‹€μ»· μ΄λ™ν•˜λ‹€κ°€ λ‹€μ‹œ 같은 지점을 λ°ŸλŠ” 것은 κ²°μ½” μ΅œμ†Œ 거리가 될 수 μ—†λ‹€. (+ μ‹œκ°„ 초과 100%...)

 

 

 

κ΅¬ν˜„ μ–Έμ–΄: Python

 

 

from collections import deque
from sys import stdin


def solve():
    global n, k, visited
    queue = deque()  # μœ„μΉ˜, μ‹œκ°„
    queue.append((n, 0))
    
    while queue:
        loc, sec = queue.popleft()
        if loc == k:
            return sec
        for move in (loc-1, loc+1, loc*2):
            if 0 <= move <= 100000 and not visited[move]:
                queue.append((move, sec+1))
                visited[move] = True
    return 0


n, k = map(int, stdin.readline().rstrip().split())
visited = [False] * (100000+1)
visited[n] = True  # μ‹œμž‘ 지점 λ¨Όμ € λ°©λ¬Έ 처리

print(solve())

 

 

 

음.... 이건 μ’€ λ°”λ³΄κ°™μ§€λ§Œ....

 

큰 μ°¨μ΄λŠ” μ—†μ§€λ§Œ λ©”λͺ¨λ¦¬λ₯Ό 아껴보겠닀고

λ°©λ¬Έμ²΄ν¬ν•˜λŠ” visited 리슀트의 크기λ₯Ό 수빈이/동생 쀑 더 λ’€μͺ½μ— μžˆλŠ” μ‚¬λžŒμ„ κΈ°μ€€μœΌλ‘œ 그만큼만 μ‚¬μš©ν–ˆμ—ˆλ‹€.

BFSλŠ” 맞게 κ΅¬ν˜„ν–ˆλŠ”λ° 계속 ν‹€λ¦¬κΈΈλž˜,,

λ‹€λ₯Έ λΆ„λ“€μ˜ 풀이λ₯Ό μ°Ύμ•„λ³΄λ‹ˆ 리슀트의 크기λ₯Ό λ¬Έμ œμƒ μ΅œλŒ€ λ²”μœ„μΈ 100000으둜 μž‘μ•„λ‘κ³  ν’€μ—ˆλ‹€.

 

 

문제의 μ˜ˆμ œλ„ 5μ—μ„œ 17둜 이동할 λ•Œ,

5-10-9-18-17 μ΄λ ‡κ²Œ λ’€μͺ½μ„ κ°”λ‹€κ°€ λŒμ•„μ˜¨λ‹€....

5-4-8-16-17 도 κ°€λŠ₯ν•˜μ§€λ§Œ λ’€μͺ½μ„ λ°˜λ“œμ‹œ κ±°μΉ˜λŠ” μΌ€μ΄μŠ€κ°€ μžˆλ‚˜λ³΄λ‹€...호호...

 

λΉ λ₯΄κ²Œ ν‘ΈλŠ” 것도 μ€‘μš”ν•˜μ§€λ§Œ, λΉ λ₯΄κ³  μ •ν™•ν•˜κ²Œ 문제λ₯Ό νŒŒμ•…ν•˜μž!! 쫌!!!

μ €μž‘μžν‘œμ‹œ λΉ„μ˜λ¦¬ λ³€κ²½κΈˆμ§€ (μƒˆμ°½μ—΄λ¦Ό)

'Problem_Solving' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

[BOJ] λ°±μ€€ 13913 μˆ¨λ°”κΌ­μ§ˆ 4 / BFS  (0) 2021.01.12
[BOJ] λ°±μ€€ 12851 μˆ¨λ°”κΌ­μ§ˆ 2 / BFS  (0) 2021.01.12
[BOJ] λ°±μ€€ 7569 ν† λ§ˆν†  / BFS  (0) 2021.01.05
[BOJ] λ°±μ€€ 2644 μ΄Œμˆ˜κ³„μ‚° / BFS, DFS  (0) 2021.01.05
[BOJ] λ°±μ€€ 2667 λ‹¨μ§€λ²ˆν˜ΈλΆ™μ΄κΈ° / BFS, DFS  (0) 2021.01.04
    'Problem_Solving' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
    • [BOJ] λ°±μ€€ 13913 μˆ¨λ°”κΌ­μ§ˆ 4 / BFS
    • [BOJ] λ°±μ€€ 12851 μˆ¨λ°”κΌ­μ§ˆ 2 / BFS
    • [BOJ] λ°±μ€€ 7569 ν† λ§ˆν†  / BFS
    • [BOJ] λ°±μ€€ 2644 μ΄Œμˆ˜κ³„μ‚° / BFS, DFS
    glowing713
    glowing713

    ν‹°μŠ€ν† λ¦¬νˆ΄λ°”