백준을 풀자! 삼성 D/S 역량 뭐시기 떨어진거 짜증나서 테스트 문제로 나왔던 dfs,bfs 를 부셔보기로 했다.
시작은 이분탐색부터 차근차근해보자!
문제
https://www.acmicpc.net/problem/1920
#처음 풀었던 풀이
//
// main.cpp
// 백준 1920
//
// Created by 신지원 on 2022/07/14.
//
#include <iostream>
#include <algorithm>
using namespace std;
int main(int argc, const char * argv[]) {
int n, m, nrr[100000];
cin >> n;
for(int i=0;i<n;i++){
cin >> nrr[i]; //배열 촵촵
}
sort(nrr, nrr+n); //정렬해주기
cin >> m;
for(int i=0;i<m;i++){
int target, res;
cin >> target;
int start = 0; int end = n-1;
while(1){
int mid = (start + end)/2;
if(start > end){
res = 0;
break; // 배열 안에 타겟이 없을 때 break;
}
if(nrr[mid] == target){
res = 1;
break; // 배열 안에 타겟이 있어도 break;
}
else if(target < nrr[mid]){
end = mid-1; //mid 보다 타겟이 작으면 끝값을 옮겨서 mid 작게만들기
}
else{
start = mid + 1; //mid 보다 타겟이 크면 시작값을 옮겨서 mid 크게만들기
}
}
cout << res << "\n";
}
return 0;
}
이렇게 썼더니 시간 초과가 났다,, 오잉?!
ios_base::sync_with_stdio(0);cin.tie(0);
더보기
<개념>
ios_base::sync_with_stdio(0);
=> printf scanf 와 cin cout 를 따로 사용하겠습니다.
cin.tie(0);
=> cin 과 cout 를 따로 사용하겠습니다.
분리해주기 때문에 입출력 속도를 빠르게 해준다는 점.
하지만 저 명령어를 쓰는 순간 printf scanf 와 cin cout 를 같이 사용하지 못한다는 점.
속도는 printf scanf > cin cout 가 더 빠르다
이걸 main 함수 앞에 써넣어서 해결 그럼 이걸 항상 써두는게 좋은 걸까? 그렇다고 준서가 말해줬다.
sort 자료형 쓸 때 항상 <algorithm> 까먹지 않기!
'cs > 백준' 카테고리의 다른 글
백준 골드 달성 푸하하 (0) | 2023.05.01 |
---|---|
[C++] 백준 2309번: 일곱 난쟁이 (3) | 2022.07.22 |
[C++] 백준 2512번: 예산 (멍청한 짓 하지 않기, 그래도 풀어서 기분 좋아) (0) | 2022.07.20 |
[Python] 백준 13706번: 제곱근 (0) | 2022.07.18 |
[C++] 백준 10816번: 숫자 카드2 #auto, upper_bound & lower_bound (2) | 2022.07.15 |