반응형
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 |
Tags
- DDD
- 플러터 개발
- 카프카
- 자바공부
- JPA
- nestjs스터디
- 스프링
- 기술공부
- querydsl
- 플러터 공부
- JPA 공부
- JPA스터디
- 프로그래머스
- 코테준비
- 스프링 공부
- 스프링공부
- Kafka
- 스프링부트
- 기술면접공부
- K8S
- Axon framework
- nestjs공부
- 자료구조공부
- nestjs
- 스프링부트공부
- 알고리즘공부
- JPA공부
- JPA예제
- Flutter
- 코테공부
Archives
- Today
- Total
DevBoi
[Binary Search] 백준 - 10816 본문
반응형
https://www.acmicpc.net/problem/10816
숫자 카드에 대한 풀이 이다.
이 문제는 기존의 이분탐색 문제와 조금 다른 부분이 있다.
기존에는 값의 범위나, 배열의 범위를 통해서 단일의 값이나 정답을 구하는 문제였지만,
이 문제의 경우에는 한 배열에서 해당과 같은 값의 수를 구하는 것이다.
배열의 탐색, 정렬에 대한 특성 중 하나를 기억 해두자
그것은 바로, 정렬된 배열에서는 자신의 값과 유사하거나 같은 값들이 인접한 인덱스에 존재한다는 것이다.
이를 바탕으로 진행해본다면 아래와 같은 메커니즘으로 문제를 풀수있다.
1. 배열을 정렬한다.
2. 이분탐색으로 해당과 같은 값을 mid값과 일치할때까지 이분탐색을 한다.
3. 값을 찾으면 해당 값의 +1, -1에 해당하는 값을 right index, left index로 두고 mid값과 같지않을때까지 ++ 혹은 --를 시켜준다.
아래는 소스로 구현한 것이다.
우선 메인은 간단하게 꾸민다. 찾고자하는 대상의 배열을 하나씩 넘겨줘서처리 한다.
해당과 같은 방법으로, left_index, right_index를 구해서 ++ 혹은 --를 해서 최대의 각 인덱스를구한다.
이는 값을 찾을때, flag boolean변수를 바꿔주면서 계산에 용이하게 해준다.
반응형
'Algorithm > [Binary Search]' 카테고리의 다른 글
BOJ2805 (0) | 2022.04.20 |
---|---|
BOJ1920 (0) | 2022.04.19 |
[Binary Search] 백준 1764번 풀이 (0) | 2021.11.18 |
[Binary Search] 백준 1920 (0) | 2021.11.18 |
[Binary Search] 백준 2110 풀이 (0) | 2021.11.18 |