https://www.acmicpc.net/problem/11834
n번째 수가 몇번 째 그룹(몇번째 홀수 그룹, 몇번째 짝수 그룹)에 속하는지 구한다면 풀 수 있는 문제이다.
나는 다음과 같은 식을 세워서 풀었다
$$ \frac{i^2 + i}{2} < n <= \frac{i^2+3*i+2}{2} $$
sqrt함수는 정밀도 때문에 사용하지 못해, 이진탐색을 이용해 i를 찾아 풀었다.
또한 100자리 수가 필요했기 때문에 big integer를 언어 차원에서 지원하는 python을 이용하여 풀었다.
a = int(input())
answer = 1
x = 10**100
y = 0
while x > y:
b = (x+y) // 2
if b*b + b >= 2*a:
x = b - 1
elif b*b + 3*b + 2 < 2*a:
y = b + 1
else:
x = b
break
x += 1
answer = 2*a - x
print(answer)
'알고리즘' 카테고리의 다른 글
2019 KAKAO 코딩테스트 후보키 (0) | 2021.09.08 |
---|---|
2019 KAKAO 코딩테스트 무지의 먹방 라이브 (0) | 2021.09.07 |
BOJ 14391 종이조각 (0) | 2021.08.23 |
BOJ 2013 선그리기 (0) | 2021.05.05 |
BOJ 14226 이모티콘 (0) | 2021.05.01 |