Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- Docker
- DFS
- 스프링
- Elasticsearch
- 알고리즘
- 코드업
- JPA
- 프로그래밍문제
- aws
- 자료구조
- 로드밸런서
- VPC
- Spring
- springboot
- 쿠버네티스
- Spring Data JPA
- 월미도
- gcp
- Kafka
- 클라우드
- 오일러프로젝트
- 스프링부트
- Spring Boot
- 인천여행
- 백트래킹
- 스프링 부트
- Apache Kafka
- 카프카
- 백준
- 클라우드 컴퓨팅
Archives
- Today
- Total
GW LABS
[코드업 3002] 기억력 테스트 3 본문
해당 문제는 이진 탐색을 연습할 수 있는 문제였다. 재귀함수를 이용해서 이진 탐색을 구현했지만 한 번에 구현하진 못했다. 탐색 범위를 잘 지정해주는 것이 이진 탐색 구현의 핵심인 것 같다.
#include <iostream>
using namespace std;
int container[1000000];
int question[100000];
int binarySearch(int startIdx, int endIdx, int target) {
if (startIdx > endIdx) return -1;
int middle = (startIdx + endIdx) / 2;
if (target < container[middle]) {
return binarySearch(startIdx, middle - 1, target);
}
else if (target > container[middle]) {
return binarySearch(middle + 1, endIdx, target);
}
else {
return middle + 1;
}
}
int main() {
int numContainer;
cin >> numContainer;
for (int i = 0; i < numContainer; i++) {
cin >> container[i];
}
int numQuestion;
cin >> numQuestion;
for (int i = 0; i < numQuestion; i++) {
cin >> question[i];
}
for (int idx = 0; idx < numQuestion; idx++) {
cout << binarySearch(0, numContainer-1, question[idx]) << " ";
}
return 0;
}
'Algorithm & DataStructure' 카테고리의 다른 글
C++로 구현하는 자료구조 (2) - LinkedList (0) | 2020.09.05 |
---|---|
C++로 구현하는 자료구조 (1) - ArrayList (0) | 2020.09.03 |
[HackerRank] Tree: Huffman Decoding (0) | 2020.08.03 |
[코드업 3710] 369 게임 3 (Large Test Case) (0) | 2020.07.10 |
[코드업 3707] 합의 개수 (0) | 2020.07.07 |
Comments