[BaekJoon] 1105 팔
1. 문제 링크
https://www.acmicpc.net/problem/11052. 문제
요약
- 2,000,000,000보다 작거나 같은 자연수 L과 L보다 크거나 같고 2,000,000,000보다 작거나 같은 자연수 R이 주어질 때 L보다 크거나 같고 R보다 작거나 같은 자연수 중에 8이 가장 적게 들어있는 수에 들어있는 8의 개수를 구하는 문제입니다.
- 입력: 첫 번째 줄에 L과 R이 주어집니다.
- 출력: 8이 가장 적게 들어있는 수에 들어있는 8의 개수를 출력합니다.
3. 소스코드
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;
public class Main {
public int getLeastEight(int small, int big) {
int eightNum = 0;
if(Integer.toString(small).length() != Integer.toString(big).length()) {
return 0;
}
if(small == big) {
while(small > 0) {
if(small % 10 == 8) {
eightNum++;
}
small /= 10;
}
return eightNum;
}
String small_str = Integer.toString(small);
String big_str = Integer.toString(big);
for(int i = 0; i < small_str.length(); i++) {
if(small_str.charAt(i) != big_str.charAt(i)) {
break;
}
if(small_str.charAt(i) == big_str.charAt(i) && small_str.charAt(i) == '8') {
eightNum++;
}
}
return eightNum;
}
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String input = br.readLine();
br.close();
StringTokenizer st = new StringTokenizer(input);
int small = Integer.parseInt(st.nextToken());
int big = Integer.parseInt(st.nextToken());
Main m = new Main();
bw.write(m.getLeastEight(small, big) + "\n");
bw.flush();
bw.close();
}
}
4. 접근
- 만약 L과 R의 자리수가 다르다면 8을 포함하지 않는 숫자가 항상 존재하기 때문에 이러한 경우에는 0을 출력합니다.
- 또한 L과 R이 같다면 그 숫자만 가능하기 때문에 해당 숫자에 들어있는 8의 개수를 세서 그 개수를 출력합니다.
- 위 두 경우 모두 아니라면 즉 L과 R의 자리수가 같고 두 숫자가 다르다면 가장 큰 자리수부터 시작하여 가장 작은 자리수까지 한 숫자씩 L과 R을 비교하여 숫자가 서로 달라질 때까지 8의 개수를 세서 그 수를 출력합니다.
- 가장 큰 자리수부터 한 숫자씩 비교하다가 서로 달라지는 순간부터 그보다 작은 자리수에는 8을 넣지 않은 숫자가 항상 존재하기 때문에 서로 달라지는 순간까지의 8의 개수를 세는 것입니다.
Author And Source
이 문제에 관하여([BaekJoon] 1105 팔), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@taeho97/BaekJoon-1105-팔저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)