일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- BlockChain
- 러스트
- AWS
- Kubernetes
- docker
- 백준
- Ethereum
- 이더리움
- Thread
- IMAGE
- fluent python
- function
- 플랫폼
- 코어 이더리움 프로그래밍
- rust
- Container
- 알고리즘
- Network
- 전문가를 위한 파이썬
- 파이썬
- Fast API
- 블록체인
- 동시성
- BAEKJOON
- guru
- Algorithm
- Python
- RabbitMQ
- dockerfile
- Refactoring
Archives
- Today
- Total
글쓰기 | 방명록 | 관리 |
Victoree's Blog
3020_개똥벌레 본문
728x90
Concept & Idea
우선 종유석과 석순을 구분하여 배열에 넣었다.
그리고 lower_bound와 upper_bound를 이용해서 장애물의 수를 count하고 배열에 높이의 수를 기록한다.
마지막에 최솟값을 출력하기 위해서, 원래 포문을 1부터 n까지 돌려야했는데 생각해보니 장애물이 0일수도 있기 때문에 이를 고침으로 맞을 수 있었다.
Code
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int n,h;
int map[200001];
vector<int> up, down;
int obstacle[200001];
int main(){
cin>>n>>h;
for(int i=0; i<n; i++)
cin>>map[i];
for(int i=0; i<n; i++) {
if(i%2==0)
down.push_back(map[i]);
else
up.push_back(map[i]);
}
sort(up.begin(), up.end()); sort(down.begin(), down.end());
for(int i=1; i<=h; i++) {
int downIndex=lower_bound(down.begin(), down.end(), i)-down.begin();
int temp = down.size()-downIndex;
int upIndex = upper_bound(up.begin(), up.end(),h-i)-up.begin();
temp+=up.size()-upIndex;
obstacle[temp]++;
}
for(int i=0; i<=n; i++) {
if(obstacle[i]!=0) {
cout<<i<<" "<<obstacle[i]<<endl;
break;
}
}
}
> 다른 테스트 케이스
input 14 5 1 3 4 2 2 4 3 4 3 3 3 2 3 3 output 7 2
Fealing
파라메트릭 서치인줄 알았는데,, 아니었다.
장애물의 최솟값을 Mid로 두고 서치를 하려고 했는데, 그 문제가 아니었다..
왜냐면 파라메트릭 서치처럼해서 탐색으로 장애물 갯수를 세려면, 거의 삼중 포문이 되어 시간초과가 나버려서 바로 다른 방법을 찾아 풀수있었다.
728x90
'Algorithm > 2019~2020' 카테고리의 다른 글
1922_네트워크의 연결 (0) | 2021.04.23 |
---|---|
1300_K번째수 (0) | 2021.04.23 |
2110-공유기 설치 (0) | 2021.04.23 |
2169-로봇 조종하기 (0) | 2021.04.23 |
11049-행렬 곱셈 순서 (0) | 2021.04.22 |
Comments