728x90

 

문제설명

입력 & 출력

나의 풀이

 

이번 "백준 - 방 번호" 문제는 숫자로 된 방 번호를 입력받아 필요한 숫자 세트최소 개수를 구하는 문제입니다.

 

(6은 9를 뒤집어서 이용할 수 있고, 9는 6을 뒤집어서 이용할 수 있다.)

 

문제의 핵심은 위와 같이 6과 9는 서로 뒤집어서 사용할 수 있다는 점입니다. 예를 들어, 6과 9는 같은 종류의 숫자 세트를 필요로 하기 때문에, 6과 9의 합을 하나의 세트로 취급합니다.

예시

  1. 6과 9의 등장 횟수 합산
    • count[6] = 2 (6이 2번 등장)
    • count[9] = 3 (9가 3번 등장)
    • 총합: count[6] + count[9] = 2 + 3 = 5
  2. 세트로 나누기
    • 6과 9동일한 세트를 공유하므로, 그 합을 반으로 나누어야 합니다. 하지만, 5개가 정확히 반으로 나누어지지 않기 때문에, 하나의 세트에 반영되는 숫자 수를 올림 처리해야 합니다.
    • 즉, 5개의 숫자를 두 개의 세트에 나누려고 할 때, 하나의 세트에 3개, 다른 세트에 2개가 포함되므로, 최소 3개의 세트가 필요합니다.
count[6] = count[9] = (count[6] + count[9] + 1) / 2;

 

위 설명과 같이 6과 9가 나온 횟수를 더해주고, 반올림 처리를 위해 +1을 해주고, 2를 나눠주어 공유하는 세트를 하나로 묶어 처리해줍니다.

 

그리고 Stream API를 사용하여 max값을 구해주고, getAsInt() 메서드 정수를 max에 저장해주고 출력하여 마무리해주었습니다.