728x90
문제
https://www.acmicpc.net/problem/1475
풀이
크기 10인 1차원 배열을 만들어서 반복문을 돌면서 인덱스에 해당하는 번호가 나올 때마다 증가를 시켜줌
반복문이 끝마녀 그 중 최댓값을 출력하면 되는데, 6이나 9인 경우에는
int temp = arr[6] + arr[9];
temp = temp / 2 + temp % 2;
6이랑 9를 뒤집어서 사용할 수 있으므로 이렇게 해줘야 됨
그 후에 다시 최댓값을 찾아서 출력하면 끝!
아예 처음에 배열을 크기 9로 만들고 입력받을 때 6이랑 9를 같은거라고 인식해서 입력 받아서 풀 수도 있을 것 같음!
코드
// 1475번 방 번호
// https://www.acmicpc.net/problem/1475
package BAEKJOON;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Num1475_방번호 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
int[] arr = new int[10];
for (int i = 0; i < str.length(); i++) {
arr[str.charAt(i) - '0']++;
}
int max = Integer.MIN_VALUE;
int maxIndex = 0;
for (int i = 0; i < arr.length; i++) {
if (max < arr[i]) {
max = arr[i];
maxIndex = i;
}
}
// 6이나 9가 아니면 그냥 max를 출력하면 됨
if (maxIndex != 6 && maxIndex != 9) {
System.out.println(max);
} else { // 6이나 9면 둘을 합해서 2로 나눠줘야함
max = Integer.MIN_VALUE;
int temp = arr[6] + arr[9];
// 최댓값으로 인식되기 때문에 0으로 만들어줌
arr[6] = 0;
arr[9] = 0;
temp = temp / 2 + temp % 2;
for (int i = 0; i < arr.length; i++) {
if (max < arr[i]) {
max = arr[i];
}
}
max = Math.max(max, temp);
System.out.println(max);
}
}
}
728x90