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
- 올레 13코스
- 올레 스테이
- 제주 올레 7
- 제주 올레 7-1
- 코스피
- Quant
- 코로나 바이러스
- 폭락
- 산노루
- 이분탐색
- 셀레니움
- 안뜨르
- 나스닥
- 사우디
- 트럼프
- 수리 키친
- 모바일 올레 패스
- 러시아
- 신한 레버리지 wti 원유 선물 ETN
- 제주 올레
- 원유
- 미국 증시
- 맨드롱국수
- S&P 500
- 올레 14-1 코스
- 주식
- 선형분석
- 알고리즘
- 카페 우다
- 카페 제라
Archives
- Today
- Total
생각이 담아두는 곳
이분탐색(백준 15732번) 본문
내 코드
//
// main.cpp
// 15732
//
// Created by CFox on 2020/03/10.
// Copyright © 2020 CFox. All rights reserved.
//
#include <iostream>
#include <algorithm>
using namespace std;
int main(int argc, const char * argv[]) {
int box, rule, dotori;
int rule_box[10001][3];
scanf("%d %d %d",&box,&rule,&dotori);
for(int i=0;i<rule;i++){
scanf("%d %d %d",&rule_box[i][0],&rule_box[i][1],&rule_box[i][2]);
}
int lo = 0;
int hi = 1000001;
while(lo+1<hi){
int mid = (lo+hi)/2;
long long count = 0;
for(int i=0;i<rule;i++){
if(rule_box[i][0]<=mid) count += ((min(rule_box[i][1],mid) - rule_box[i][0])/rule_box[i][2] + 1);
}
if(count>=dotori) hi = mid;
else lo = mid;
}
printf("%d",hi);
}
d처음에 rule_box[i][1]과 mid 중 최소를 잡아주는 것을 못하고 계속 틀렸다. 생각해보면 당연한데, 기준을 잡고 그 기준보다 아래에 있는 박스들에 들어간 도토리 갯수를 구하는건데, 예를 들면
규칙이 100번 상자부터 150상자까지 10번째씩 도토리를 넣는다고 생각하면, 내가 잡은 기준이 120번이라고 했을 때, 130과 140과 150은 카운트를 하지 않기 때문이다. ㅇㅅㅇ
아무튼 이 착오 때문에 여러 번 틀렸다.
'CS > Algorithm' 카테고리의 다른 글
이분탐색(백준 1300번) (0) | 2020.03.16 |
---|---|
이분탐색(백준 6236번, 1654번, 2110번) (0) | 2020.03.04 |
이분 탐색(백준 2512번과 2343번) (1) | 2020.03.04 |
Comments