Recent Posts
Recent Comments
Archives
- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- Graph
- 알고리즘
- 동적계획법
- 그래프
- 아파치
- apache
- cube sound
- baek joon
- ubuntu
- simulation
- 다이나믹 프로그래밍
- C++
- Algorithm
- 넓이 우선 탐색
- 비주얼 스튜디오 코드
- sw expert academy
- 시뮬레이션
- dfs
- 배틀
- BOJ
- BFS
- Visual Studio Code
- 공연
- 백준
- 우분투
- dp
- filezila server
- dynamic programming
- 삼성 알고리즘
- 춤
Link
댄코 - 댄싱코딩
[BOJ] 1300 K번째 수 본문
이분 탐색으로 left = 1, right = k를 시작으로 mid를 구하고 그 mid보다 작거나 같은 수의 갯수를 cnt에 저장한다.
cnt를 구하는 이유는 k번째 수를 구하기 위해서 k보다 작은 수의 갯수를 구할 필요가 있기 때문이다.
cnt(mid보다 작거나 같은 수)는
min( mid / i, N) --- (i 는 1부터 N까지)
를 전부 더한값이다.
그 이유는 a[i][j]에서 i행은 i의 배수들로 이루어져 있기 때문.
그때, i의 배수들이 N개를 넘을 수 없으므로 min함수를 이용한다.
그렇게 나온 cnt값(mid보다 작거나 같은 수의 갯수)이 k보다 작다면
left 값을 올리고
그렇지 않다면
result 에 mid값을 대입한 후 right값을 내린다.
'코딩 > 알고리즘' 카테고리의 다른 글
[BOJ] 9663 N-Queen (0) | 2017.08.29 |
---|---|
[BOJ] 1654 랜선 자르기 (0) | 2017.08.20 |
[BOJ] 11052 붕어빵 판매하기 (0) | 2017.08.14 |
[BOJ] 14499 주사위 굴리기 (0) | 2017.08.01 |
[BOJ] 11055 가장 큰 증가 부분 수열 (0) | 2017.07.27 |
Comments