본문 바로가기
PS/Baekjoon

[Baekjoon] 1475 - 방 번호

by 서현 SEOHYEON 2023. 6. 22.

📝 문제

 

 

🔑 풀이 과정

· 숫자가 등장하는 횟수를 카운트 할 배열을 생성한다. 여기서 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

댓글