Recent Posts
Recent Comments
Link
- Today
- Yesterday
- Total
메이쁘
(JAVA) 백준 2872번 : 우리집엔 도서관이 있어 본문
https://www.acmicpc.net/problem/2872
2872번: 우리집엔 도서관이 있어
문제 상근이는 컴퓨터 공학의 일인자가 되기 위해 책을 매우 많이 구매했다. 하지만, 집에 책장이 없어서 책을 탑처럼 쌓아놓고 있다. 오늘은 오랜만에 상근이가 집에서 휴식을 취하는 날이다. �
www.acmicpc.net
이진 탐색 분류로 되어있는데
그리디로 해결한 문제.
생각보다 쉽지만 처음 규칙을 찾는데 조금 걸렸다.
핵심은
- 시작 인덱스를 1로 가정하고, 입력받은 책의 맨 앞에서부터 끝까지 하나씩 시작 인덱스와 비교한다.
- 비교했을 때,
-> 시작 인덱스 + 1 보다 더 크다면 -> 해당 값 과 시작 인덱스 차이만큼 별도 값에 더한 후, 시작 인덱스를 해당 값 으로 변경한다.
-> 시작 인덱스 + 1 인 경우 -> 시작 인덱스를 해당 값으로 변경한다.
-> 시작 인덱스 보다 작은 경우 -> 무시하고 다음 값을 비교하러 간다.
- 이 때, 첫 번째 값만 다르게 비교하는데
2보다 큰 경우 -> 첫 번째 값 - 1 한 값을 별도 값에 더한 후, 시작 인덱스를 해당 값으로 변경한다.
1인 경우 -> 그대로 진행
이상입니다.
감사합니다!
소스코드
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import java.io.BufferedReader; | |
import java.io.IOException; | |
import java.io.InputStreamReader; | |
// 우리집엔 도서관이 있어 | |
// 구현? 이진탐색? | |
public class p2872 { | |
static int[] books; | |
public static void main(String args[]) throws NumberFormatException, IOException { | |
BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); | |
int n = Integer.parseInt(br.readLine()); | |
books = new int[n]; | |
for(int i = 0; i < n; i++) { | |
int num = Integer.parseInt(br.readLine()); | |
books[i] = num; | |
} | |
int start = 1; | |
int sum = 0; | |
if(n <= 1) { | |
System.out.println(0); | |
} | |
else { | |
// 맨 첫 번째 인덱스만 구하기 | |
if(books[0] > 1) { | |
sum += books[0] - 1; | |
start = books[0]; | |
} | |
for(int i = 1; i < n; i++) { | |
if(start + 1 < books[i]) { | |
sum += books[i] - start; | |
start = books[i]; | |
} | |
if(start + 1 == books[i]) { | |
start = books[i]; | |
} | |
} | |
System.out.println(sum); | |
} | |
} | |
} |
'Algorithm > Baekjoon' 카테고리의 다른 글
(JAVA) 백준 10988번 : 팰린드롬인지 확인하기 (0) | 2020.08.26 |
---|---|
(JAVA) 백준 1159번 : 농구 경기 (0) | 2020.08.26 |
(JAVA) 백준 2878번 : 캔디캔디 (0) | 2020.06.07 |
(JAVA) 백준 1300번 : K번째 수 (0) | 2020.06.07 |
(JAVA) 백준 6236번 : 용돈 관리 (0) | 2020.06.07 |