Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 편스토랑 우승상품
- AI 경진대회
- gs25
- PYTHON
- 우분투
- dacon
- Baekjoon
- 코로나19
- ChatGPT
- 프로그래머스 파이썬
- github
- Git
- programmers
- hackerrank
- 자연어처리
- 편스토랑
- 프로그래머스
- 캐치카페
- 더현대서울 맛집
- SW Expert Academy
- 백준
- 파이썬
- Docker
- Kaggle
- 데이콘
- Real or Not? NLP with Disaster Tweets
- 맥북
- 금융문자분석경진대회
- leetcode
- ubuntu
Archives
- Today
- Total
솜씨좋은장씨
[BaekJoon] 2052번 : 지수연산 (Python) 본문
728x90
반응형
코딩 1일 1문제! 오늘의 문제는 백준의 지수연산 입니다.
👨🏻💻 문제 풀이
그저 1 / 2^N 의 값을 구하면 되는 문제여서 오! 엄청 쉽네! 라고 생각했다가
가차없이 틀렸습니다! 를 보고 아! 하고 오랜만에 무언가 깨닫게 된 문제였습니다.
바로 소수점 표시 입니다!
1 / pow(2, 250)
1 / 32 와 같은 값은 크게 문제가 되지 않지만 위와 같이 1 / 2^250 과 같은 값은
소수점이 너무 길어져서
5.527147875260445e-76
위와 같이 e와 - 를 활용하여 표현하게 됩니다.
하지만! 이 문제에서 우리가 원하는 것은! 소수 아래 모든 자리수를 구하는 것이었습니다.
이를 해결하는 방법은 2가지가 있습니다.
바로 % 를 활용하는 방법과 {}.format을 활용하는 방법입니다.
👨🏻💻 % 를 활용하는 방법
"%.300f" % (1 / pow(2, N))
👨🏻💻 {}.format() 을 활용하는 방법
"{:.300f}".format(1 / pow(2, N))
이 방법을 활용하여 문제를 풀었습니다.
또 이 문제에서는 뒤에 0을 붙이지 않는다고 되어있습니다.
0을 지우는 것은 뒤에서부터 0이 아닌 숫자가 나올떄까지 반복문을 돌면서 인덱스를 찾고
해당 인덱스로 문자열을 slicing 하는 방식으로 진행했습니다.
slice_idx = len(answer)
for idx in range(len(answer)-1, 1, -1):
if answer[idx] != '0':
slice_idx = idx + 1
break
👨🏻💻 코드 ( Solution )
def exponentiation(N):
answer = "%.300f" % (1 / pow(2, N))
# answer = "{:.300f}".format((1 / pow(2, N))
slice_idx = len(answer)
for idx in range(len(answer)-1, 1, -1):
if answer[idx] != '0':
slice_idx = idx + 1
break
return answer[:slice_idx]
if __name__ == "__main__":
N = int(input())
print(exponentiation(N))
'Programming > 코딩 1일 1문제' 카테고리의 다른 글
[BaekJoon] 25083번 : 새싹 (Python) (0) | 2022.05.01 |
---|---|
[BaekJoon] 2408번 : 큰 수 계산 (Python) (0) | 2022.04.30 |
[BaekJoon] 10768번 : 특별한 날 (Python) (0) | 2022.04.28 |
[BaekJoon] 1297번 : TV 크기 (Python) (0) | 2022.04.27 |
[BaekJoon] 16394번 : 홍익대학교 (Python) (0) | 2022.04.26 |
Comments