Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- web
- VanillJS
- venv
- seo
- 비동기
- 프로그래머스
- canvas
- useMemo
- React.memo
- webpack
- prettier
- Permutations
- Hook
- react internals
- pjax
- 그리디
- react
- useState
- 완전탐색
- 코테
- 코딩테스트
- useCallback
- python
- BFS
- eslint
- 환경설정
- await
- Custom Hook
- VanillaJS
- useEffect
Archives
- Today
- Total
Amada Coding Club
[백준] Python 16953 A → B 본문
문제 설명은 다음과 같다.
나는 a에서 b로 가는 방법이 아닌 b에서 a로 역추적하는 방법을 사용했다.
b의 끝이 1로 끝나면 1을 빼고 아니면 2를 나누는 작업을 a보다 작거나 같을 때까지 반복하고 마지막에 비교할 때 바뀐 b와 a가 같으면 count값을 출력하는 방식을 생각했다.
a, b = map(int, input().split())
count = 0
while b > a:
b = str(b)
if (b[-1] == '1'):
b = b[:len(b)-1]
b = int(b)
count += 1
else:
b = int(b)
b = b // 2
count += 1
if (b != a):
print(-1)
else:
print(count+1)
근데 실패가 떴다.
왜지..? 했는데 생각해보니까
끝이 1이 아닌 경우에도 홀수의 경우 2로 나누게 되면 소수점이 되기 때문에 값이 나올 수가 없다.
그래서 끝이 1이 아닌 경우 홀수면 반복문을 빠져나가고 -1를 출력해야 한다!!
a, b = map(int, input().split())
count = 0
while b > a:
b = str(b)
if (b[-1] == '1'):
b = b[:len(b)-1]
b = int(b)
count += 1
else:
if (int(b) % 2 != 0):
b = int(b)
break
b = int(b)
b = b // 2
count += 1
if (b != a):
print(-1)
else:
print(count+1)
이렇게,, 이건 나름 쉽게 풀어서 기분이 좋다 ㅎㅎ
'코딩테스트-Python > 오답노트' 카테고리의 다른 글
[백준] Python 2468 안전영역 (0) | 2023.01.13 |
---|---|
[백준] python 7576번 토마토 (0) | 2023.01.13 |
[백준] Python 1436 영화감독 슘 (0) | 2023.01.10 |
[백준] Python-1018 체스판 다시 칠하기 (0) | 2023.01.10 |
[프로그래머스] 멀리뛰기 (0) | 2023.01.08 |