반응형
[문제 풀이]
1. (가로등 사이의 거리 / 2) 중에 가장 큰 값을 구하는 방식으로 문제 해결
[코드]
- 길의 시작 ~ 처음 가로등 사이의 거리, 가로등 사이의 거리 / 2, 마지막 가로등 ~ 길의 끝 거리 중에 가장 큰 값 선택
dis = 0;
pre = 0;
for(int m=0; m<M; m++) {
cur = Integer.parseInt(st.nextToken());
tmp = cur - pre;
if(m == 0) { // 길의 시작 ~ 처음 가로등 사이의 거리
dis = Math.max(tmp, dis);
}else { // 2개의 가로등이 거리를 나눠서 길을 비추므로
if(tmp % 2 == 0) {
dis = Math.max(tmp/2, dis);
}else {
dis = Math.max(tmp/2 + 1, dis);
}
}
pre = cur;
}
dis = Math.max(N - pre, dis); // 마지막 가로등 ~ 길의 끝 거리
[전체 코드]
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
static int N, M, dis, pre, tmp, cur;
static StringTokenizer st;
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
N = Integer.parseInt(br.readLine());
M = Integer.parseInt(br.readLine());
st = new StringTokenizer(br.readLine());
dis = 0;
pre = 0;
for(int m=0; m<M; m++) {
cur = Integer.parseInt(st.nextToken());
tmp = cur - pre;
if(m == 0) {
dis = Math.max(tmp, dis);
}else {
if(tmp % 2 == 0) {
dis = Math.max(tmp/2, dis);
}else {
dis = Math.max(tmp/2 + 1, dis);
}
}
pre = cur;
}
dis = Math.max(N - pre, dis);
System.out.println(dis);
}
}
https://www.acmicpc.net/problem/17266
반응형
'Algorithm > Baekjoon' 카테고리의 다른 글
[ 백준 1388 ] 바닥 장식 (JAVA) (0) | 2025.01.31 |
---|---|
[ 백준 12789 ] 도키도키 간식드리미 (C++) (0) | 2025.01.26 |
[ 백준 1937 ] 욕심쟁이 판다 (C++) (0) | 2024.12.30 |
[ 백준 5046 ] 전국 대학생 프로그래밍 대회 동아리 연합 (C++) (0) | 2024.12.13 |
[ 백준 4659 ] 비밀번호 발음하기 (C++) (1) | 2024.12.12 |