1. 문제
https://www.acmicpc.net/problem/1475
1475번: 방 번호
첫째 줄에 다솜이의 방 번호 N이 주어진다. N은 1,000,000보다 작거나 같은 자연수이다.
www.acmicpc.net
2. 풀이
백준에서 구현으로 분류되어 있는 문제이다. 예제 입력으로 주어지는 수를 문자열로 받은 후 하나씩 갯수를 센다. 이때 6과 9는 같은 수로 처리되므로 반복문이 끝난 후 6과 9가 나온 횟수를 더한 후 2를 나누어 주었다. 이때 횟수를 저장할 변수나 배열 원소들을 실수형으로 선언해야 정확한 개수가 나온다.
예를 들어 저장할 변수나 배열 원소들을 정수형으로 선언했다면 6이 1번 9가 2번이 나왔을 경우 횟수를 더하고 나누면 "1 + 2 = 3, 3 / 2 = 1"이 된다. 실제로 세트의 개수는 2개가 필요한다 1개가 필요하게 된다. 따라서 실수형으로 선언 후 소수점이 나온다면 올림을 해주어야 한다. 마지막으로 갯수가 저장된 배열의 원소들 중에서 최대 값을 구하면 필요한 세트의 개수가 나온다.
3. 소스코드
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.*;
class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String input = br.readLine();
List<Character> list = new ArrayList<>();
double[] cnt = new double[10];
for (int i = 0; i < input.length(); i++) {
char c = input.charAt(i);
list.add(c);
}
for (int i = 0; i < list.size(); i++) {
char c = input.charAt(i);
int c_int = c - '0';
cnt[c_int] += 1;
}
double temp = (cnt[6] + cnt[9]) / 2;
Math.round(temp);
cnt[6] = temp;
cnt[9] = 0;
double max = 0;
for (int i = 0; i < cnt.length; i++) {
if (max < cnt[i]) {
max = cnt[i];
}
}
bw.write(String.format("%.0f", max));
bw.flush();
bw.close();
br.close();
}
}