브루트포스
[백준] 1590. 캠프가는 영식 풀이
hch06
2025. 2. 2. 18:14
https://www.acmicpc.net/problem/1590
각 버스에 대해
버스 탑승 시간의 최솟값을 res로 두면
도착시간이 버스 시작시간이면 res = 0
도착 시간이 버스 시작 시간 전이면 res = (버스 시작시간) - (도착시간)
도착 시간이 마지막 버스 시간 후이면 continue
이 모든것이 아니면 res = 도착 후 제일 먼저 오는 버스
각 버스에 대한 res들 중 최솟값 저장 후 최솟값이 초기화한 값(Int범위 중 가장 큰 값)이면 버스가 없음을 의미한다.
C
더보기
더보기
더보기
#include <stdio.h>
int main(){
int n, t; scanf("%d %d", &n, &t);
int min = 2147483647;
for(int i = 1; i <= n; i++){
int s, l, c; scanf("%d %d %d", &s, &l, &c);
int res;
if(t == s) res = 0; // 도착시간 = 버스시작시간, 버스 1대
else if(s > t) res = s - t; // 도착 후 첫번째 버스
else if((s + (l * c)) - l < t) continue; // 버스 탑승 불가
else{ // 도착 후 먼저 오는 버스
res = s;
while(c--){
if(res >= t) {res -= t; break;}
res += l;
}
}
if(res < min) min = res;
}
if(min == 2147483647) printf("-1");
else printf("%d", min);
}
Python
더보기
더보기
더보기
n, t = map(int, input().split())
min = 2 ** 31
for i in range(n):
s, l, c = map(int, input().split())
if t == s and c == 1: res = 0 # 도착시간 = 버스시작시간, 버스 1대
elif s > t: res = s - t # 도착 후 첫번째 버스
elif s + (l * c) - l < t: continue # 버스 탑승 불가
else: # 도착 후 먼저 오는 버스
res = s
while c:
if res >= t: res -= t; break
c -= 1
res += l
if res < min: min = res
if min == 2 ** 31: print("-1")
else: print(min)