📝 문제
🔑 풀이 과정
· 숫자가 등장하는 횟수를 카운트 할 배열을 생성한다. 여기서 6과 9는 공용으로 사용해 줄 수 있으므로, 9의 등장횟수는 6에다가 추가할 것이다. 배열 크기는 9를 선언해서 인덱스를 8까지만 사용해 줄 것이다.
· 숫자를 하나씩 읽으면서 카운팅 해준다. 위에서 언급했듯이 9일 경우는 6에 카운팅 해준다.
· 6과 9를 같이 카운팅했으므로 보정작업을 해줘야한다. 다른 숫자들은 1회 카운트 = 1세트 필요 지만
6과 9는 같이 쓸 수 있으므로 2회 카운트 = 1세트이다. 그러므로 6을 카운팅 한 횟수를 2로 나눠줘야 필요한 세트가 나온다.
또 여기서 홀수인 경우는 1을 더해준뒤 2로 나눠줘야 한다. 예를 들어 6의 카운팅 수가 7이면, 총 4세트가 필요하다. 7을 2로 나누면 3이 나오니까 + 1을 해준뒤 2로 나눈다.
· 그 후 카운팅 배열의 max값이 필요한 세트의 최솟값이다.
🔓 답안
import java.io.*;
public class Main {
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 roomNum = br.readLine();
int[] arr = new int[9]; //인덱스 0부터 8까지 쓴다.
//숫자 등장하는 개수 카운트
for(int i = 0; i < roomNum.length(); i++){
if(roomNum.charAt(i) == '9') //9일 경우 6을 증가시킨다. (같이 사용할 수 있음)
arr[6]++;
else
arr[roomNum.charAt(i) - '0']++;
}
//예를들어 6의 개수가 7개가 나오면 세트는 총 4세트가 필요함
if((arr[6] % 2) == 1) //홀수의 경우는 한 번 더 증가시킴
arr[6] += 1;
arr[6] = arr[6] / 2;
//---
//최대값 구하기
int maxCount = 0;
for(int i = 0; i < 9; i++){
if(arr[i] > maxCount)
maxCount = arr[i];
}
bw.write(maxCount + "\n");
bw.flush();
bw.close();
}
}
🖤 알고리즘 분류
- 구현
'PS > Baekjoon' 카테고리의 다른 글
[Baekjoon] 19532 - 수학은 비대면강의입니다 (0) | 2023.06.26 |
---|---|
[Baekjoon] 1476 - 날짜 계산 (0) | 2023.06.23 |
[Baekjoon] 4673 - 셀프 넘버 (0) | 2023.06.21 |
[Baekjoon] 10866 - 덱 (0) | 2023.06.20 |
[Baekjoon] 2108 - 통계학 (0) | 2023.06.19 |
댓글