티스토리 뷰
반응형
처음 이 문제를 풀면서 다음과 같은 수식을 만들었습니다.
day++;
meter=0;
meter = meter +(A-B);
간단한 수식을 만들어 실행한때 정상적으로 문제의 답이 나왔으나
문제 제출하면 "시간 초과"가 뜨더라고요.
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int A = sc.nextInt();
int B = sc.nextInt();
int V = sc.nextInt();
int meter =0;
int day =0;
while(true) {
day++;
meter= meter+A;
if(meter<V) {
meter= meter-B;
}else {
break;
}
}
System.out.println(day);
}
}
문제는 V의 값이 너무나도 커지면 반복문을 끝없이 반복하게되서 지정된 시간 제한을 넘어버리게 됩니다.
문제점을 보도록 하겠습니다.
1. 답은 day를 구하는 것이지 길이를 구하는 것은 나중이다.
즉 meter = meter +(A-B); 수식을 만들어 적용할 필요가 없다
meter 거리에 B 거리를 보완후 하루동안 이동한 거리(A-B)를 나누어 day를 구하는 방식을 적용했습니다.
최초 한번만 실행하기 때문에 과도한 반복시간은 배제가 가능!
그리고 if문을 적용하여 목적 거리에 도착을 못하면 day+1 을 입력하여 보정해준다.
2. 정수 입력 방식을 바꿔 보자
정수를 입력하는 방법은
Integer.parseInt 방식
Scanner 방식
Tokenizer 방식
각 방식의 목적은 입력이지만 입력 버퍼와 시간의 차이가 있습니다.
저는 방식을 바꾸어 Tokenizer 방식과 Integer.parseInt 방식을 사용했습니다.
import java.io.*;
import java.util.*;
public class Main{
public static void main(String[] args)throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int A = Integer.parseInt(st.nextToken());
int B = Integer.parseInt(st.nextToken());
int V = Integer.parseInt(st.nextToken());
int day =(V-B)/(A-B);
if((V-B)%(A-B)!=0) {
day++;
}
System.out.println(day);
}
}
시간초과 의 의미는 이해했으나 처음으로 코딩하면서 코딩과 시간관계의 문제를 해결하기 위해 고민해본 시간이었습니다.
반응형
'알고리즘 > 백준' 카테고리의 다른 글
[1197]최소 스패닝 트리(MST) / 스패닝 트리(STP) (0) | 2021.02.14 |
---|---|
[백준] 1330번 두 수 비교하기 (0) | 2021.02.09 |
[level 1] 두 개 뽑아서 더하기 (0) | 2021.02.09 |
[백준 10250 JAVA] ACM 호텔 (0) | 2020.07.14 |
[백준 2941] JAVA 문제 풀어보기 (0) | 2020.07.10 |
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- kakao
- Matlab
- 수학
- Spring
- nginx
- 디자인패턴
- 매트랩
- 자바
- Solid
- 면접
- docker
- java
- 스프링
- springboot
- OOP
- JPA
- ajax
- CS
- interview
- Algorithm
- 스프링부트
- spring-cloud
- 그래프
- 자격증
- 알고리즘
- 백준
- security
- 프로그래머스
- C언어
- 릿코드
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
글 보관함