문제 : boj14625
시작시간부터 종료시간까지 각 분마다 어떠한 숫자들이 표시될지만 잘 판단할 수 있다면 풀 수 있다. 함수를 나눠보자. 필요한건 결국
1. 시작시간부터 시작해서 종료시간까지 1분씩 잘 더해줄 수 있는 함수
2. '1'의 각 시간에서 N이 포함되어 있는지 판단해주는 함수
위의 두 개만 있으면 된다. 문자로 해도 상관없지만, 내 경우엔 숫자로 처리했다. '1'에 해당하는 부분이 plusMin, '2'에 해당하는게 canSee 이다. 찾는 방법은 코드를 참고해보자. 주의점은 HHMM 형태이므로, int로 나타냈을 때 1000이하의 수라면, 예를들어서 5시 34분이라면 534라고 표현될 것이다. 실제론 맨 앞에 0이 있다고 봐야 하므로 N이 0일 경우 1000 이하의 수라면 0이 항상 존재한다고 볼 수 있다. 이 부분을 주의해야한다.
코드 : github
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
private boolean canSee(int a, int n) {
if (a<1000 && n==0) return true;
while (a!=0) {
if (a%10==n) return true;
a/=10;
}
return false;
}
private int plusMin(int a) {
if (a%100 == 59)
return (a/100+1)*100;
return ++a;
}
private void solution() throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int s = Integer.parseInt(st.nextToken())*100 + Integer.parseInt(st.nextToken());
st = new StringTokenizer(br.readLine());
int e = Integer.parseInt(st.nextToken())*100 + Integer.parseInt(st.nextToken());
int n = Integer.parseInt(br.readLine());
int cnt = 0;
while (s<=e) {
if (canSee(s, n)) cnt++;
s = plusMin(s);
}
System.out.println(cnt);
}
public static void main(String[] args) throws Exception {
new Main().solution();
}
}
'PS > BOJ' 카테고리의 다른 글
[자바, 파이썬] 백준 14928 - 큰 수 (BIG) (boj java python) (3) | 2022.06.25 |
---|---|
[자바] 백준 6755 - Who is taller? (boj java) (0) | 2022.06.25 |
[자바] 백준 12034 - 김인천씨의 식료품가게 (Large) (boj java) (0) | 2022.06.23 |
[자바] 백준 23037 - 5의 수난 (boj java) (0) | 2022.06.22 |
[자바] 백준 15688 - 수 정렬하기 5 (boj java) (0) | 2022.06.21 |
댓글