deo2kim
λ§žμ™œν‹€
deo2kim
전체 방문자
였늘
μ–΄μ œ
  • λΆ„λ₯˜ 전체보기
    • CS
      • Algorithm
      • Data Structure
      • Network
      • DB
      • OS
    • Algorithm Problem
      • Python
      • JavaScript
    • Programming language
      • Python
      • JavaScript
    • Tool
      • Jquery
      • React
    • 개발
    • Infra

λΈ”λ‘œκ·Έ 메뉴

  • ν™ˆ
  • νƒœκ·Έ
  • λ°©λͺ…둝

곡지사항

인기 κΈ€

졜근 λŒ“κΈ€

졜근 κΈ€

ν‹°μŠ€ν† λ¦¬

λ°˜μ‘ν˜•
hELLO Β· Designed By μ •μƒμš°.
deo2kim

λ§žμ™œν‹€

[python] λ°±μ€€ - 16953. A → B
Algorithm Problem/Python

[python] λ°±μ€€ - 16953. A → B

2020. 9. 18. 08:13
λ°˜μ‘ν˜•

πŸ€”λ¬Έμ œ ν•΄κ²°

  • S1 | κ·Έλž˜ν”„, BFS λ‚œ DFS

μ•Œκ³ λ¦¬μ¦˜ λΆ„λ₯˜μ—λŠ” κ·Έλž˜ν”„μ™€ BFS둜 λ‚˜μ™€μžˆλŠ”λ° 잘 λͺ¨λ₯΄κ² κ³ , DFS둜 ν•΄κ²°ν–ˆλ‹€.

λͺ©ν‘œ μˆ«μžλΆ€ν„° 두가지 경우둜 λ‚˜λˆ μ„œ λ“€μ–΄κ°„λ‹€. 

  1. 맨 끝의 μˆ«μžκ°€ 1이면 1을 버리고 μž¬κ·€
  2. 맨 끝의 μˆ«μžκ°€ 1이 아닐 λ•Œ 2둜 λ‚˜λˆ„μ–΄ λ–¨μ–΄μ§€λ©΄ 2둜 λ‚˜λˆ„κ³  μž¬κ·€

ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€ 3λ²ˆμ„ μ˜ˆμ‹œλ‘œ ν•˜κ² λ‹€ ( 100, 40021 )

  • 40021: 맨 끝의 μˆ«μžκ°€ 1μ΄λ―€λ‘œ 1을 버린닀 40021 => 4002
    μ²΄ν¬ν•˜λŠ” 방법은 10으둜 λ‚˜λˆˆ λ‚˜λ¨Έμ§€, λ²„λ¦¬λŠ” 방법은 10으둜 λ‚˜λˆˆ λͺ«
  • 4002: 맨 끝의 μˆ«μžκ°€ 1이 μ•„λ‹ˆκ³  2둜 λ‚˜λˆ„μ–΄ λ–¨μ–΄μ§€λ―€λ‘œ 2둜 λ‚˜λˆˆλ‹€. 4002 => 2001
  • 2001: 버린닀. 2001 => 200
  • 200: λ‚˜λˆˆλ‹€. 200 => 100
  • 100: 100 == A μ΄λ―€λ‘œ 그만! κ³Όμ •μ˜ 횟수λ₯Ό 세보면 4이닀.
  • 닡은 +1을 ν•˜λ―€λ‘œ 5

ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€ 2λ²ˆμ„ μ˜ˆμ‹œλ‘œ ν•˜κ² λ‹€ ( 4, 42 )

  • 42: 2둜 λ‚˜λˆˆλ‹€. 42 => 21
  • 21: 1을 버린닀. 21 => 2
  • 2: 2 < A μ΄λ―€λ‘œ νƒˆλ½!
  • -1 좜λ ₯

πŸ’¨

πŸ’»μ†ŒμŠ€ μ½”λ“œ

def solution(A, B):
    answer = 1

    def cal(num):
        nonlocal answer
        if num > A:

            if num % 10 == 1:
                answer += 1
                cal(num // 10)
            else:
                if num % 2 == 0:
                    answer += 1
                    cal(num // 2)
                else:
                    answer = -1
                    return
        elif num < A:
            answer = -1
            return

    cal(B)
    print(answer)


if __name__ == "__main__":
    A0, B0 = map(int, input().split())
    solution(A0, B0)

 

πŸ“•λ¬Έμ œ 확인

좜처: BACKJOON ONLINE JUDGE

링크: https://www.acmicpc.net/problem/16953

 

16953번: A → B

첫째 쀄에 A, B (1 ≤ A < B ≤ 109)κ°€ μ£Όμ–΄μ§„λ‹€.

www.acmicpc.net


문제

μ •μˆ˜ Aλ₯Ό B둜 λ°”κΎΈλ €κ³  ν•œλ‹€. κ°€λŠ₯ν•œ 연산은 λ‹€μŒκ³Ό 같은 두 가지이닀.

  • 2λ₯Ό κ³±ν•œλ‹€.
  • 1을 수의 κ°€μž₯ 였λ₯Έμͺ½μ— μΆ”κ°€ν•œλ‹€. 

Aλ₯Ό B둜 λ°”κΎΈλŠ”λ° ν•„μš”ν•œ μ—°μ‚°μ˜ μ΅œμ†Ÿκ°’μ„ κ΅¬ν•΄λ³΄μž.

μž…λ ₯

첫째 쀄에 A, B (1 ≤ A < B ≤ 10^9)κ°€ μ£Όμ–΄μ§„λ‹€.

좜λ ₯

Aλ₯Ό B둜 λ°”κΎΈλŠ”λ° ν•„μš”ν•œ μ—°μ‚°μ˜ μ΅œμ†Ÿκ°’μ— 1을 λ”ν•œ 값을 좜λ ₯ν•œλ‹€. λ§Œλ“€ 수 μ—†λŠ” κ²½μš°μ—λŠ” -1을 좜λ ₯ν•œλ‹€.

λ°˜μ‘ν˜•
μ €μž‘μžν‘œμ‹œ λΉ„μ˜λ¦¬ λ³€κ²½κΈˆμ§€

'Algorithm Problem > Python' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

[python] λ°±μ€€ - 2617. ꡬ슬 μ°ΎκΈ°  (0) 2020.09.19
[python] SWEA - 6019. κΈ°μ°¨ μ‚¬μ΄μ˜ 파리  (2) 2020.09.18
[python] SWEA - 1248. 곡톡쑰상  (0) 2020.09.17
[python] ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ - 3 x n 타일링  (0) 2020.09.17
[python] λ°±μ€€ - 9658. 돌 κ²Œμž„4  (0) 2020.09.16
    'Algorithm Problem/Python' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
    • [python] λ°±μ€€ - 2617. ꡬ슬 μ°ΎκΈ°
    • [python] SWEA - 6019. κΈ°μ°¨ μ‚¬μ΄μ˜ 파리
    • [python] SWEA - 1248. 곡톡쑰상
    • [python] ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ - 3 x n 타일링
    deo2kim
    deo2kim
    μ½”λ”© κΈ°λ‘ν•˜κΈ°

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