728x90
문제설명
입력 & 출력
나의 풀이
이번 "백준 - 방 번호" 문제는 숫자로 된 방 번호를 입력받아 필요한 숫자 세트의 최소 개수를 구하는 문제입니다.
(6은 9를 뒤집어서 이용할 수 있고, 9는 6을 뒤집어서 이용할 수 있다.)
문제의 핵심은 위와 같이 6과 9는 서로 뒤집어서 사용할 수 있다는 점입니다. 예를 들어, 6과 9는 같은 종류의 숫자 세트를 필요로 하기 때문에, 6과 9의 합을 하나의 세트로 취급합니다.
예시
- 6과 9의 등장 횟수 합산
- count[6] = 2 (6이 2번 등장)
- count[9] = 3 (9가 3번 등장)
- 총합: count[6] + count[9] = 2 + 3 = 5
- 세트로 나누기
- 6과 9는 동일한 세트를 공유하므로, 그 합을 반으로 나누어야 합니다. 하지만,
5개가 정확히 반으로 나누어지지 않기때문에, 하나의 세트에 반영되는 숫자 수를 올림 처리해야 합니다. - 즉, 5개의 숫자를 두 개의 세트에 나누려고 할 때, 하나의 세트에 3개, 다른 세트에 2개가 포함되므로, 최소 3개의 세트가 필요합니다.
- 6과 9는 동일한 세트를 공유하므로, 그 합을 반으로 나누어야 합니다. 하지만,
count[6] = count[9] = (count[6] + count[9] + 1) / 2;
위 설명과 같이 6과 9가 나온 횟수를 더해주고, 반올림 처리를 위해 +1을 해주고, 2를 나눠주어 공유하는 세트를 하나로 묶어 처리해줍니다.
그리고 Stream API를 사용하여 max값을 구해주고, getAsInt() 메서드로 정수를 max에 저장해주고 출력하여 마무리해주었습니다.
'Coding Test > 백준' 카테고리의 다른 글
[백준, 1476번] 날짜 계산 (브루트 포스 , Java) (0) | 2024.11.23 |
---|---|
[백준, 1789번] 수들의 합 (구현, 그리디 알고리즘, Java) (0) | 2024.11.22 |
[TIL, 일일 회고] 2024.11.19 - BigInteger 길이를 구하는 방법 (0) | 2024.11.19 |
[백준, 10815번] 숫자 카드 (정렬, 이진 탐색, Java) (0) | 2024.11.19 |
[백준, 11050번] 이항 계수 1 (수학, 구현, 조합론, Java) (1) | 2024.11.18 |