[백준 알고리즘] Node.js 1475. 방 번호
2023. 8. 3. 15:22ㆍ코딩연습
1. 문제
https://www.acmicpc.net/problem/1475
1475번: 방 번호
첫째 줄에 다솜이의 방 번호 N이 주어진다. N은 1,000,000보다 작거나 같은 자연수이다.
www.acmicpc.net
2. 풀이
- 첫째 줄에 방 번호 N이 주어진다.
- 6이나 9는 뒤집어서 사용할 수 있다.
- 각각의 숫자 사용 개수를 객체 배열에 넣어놓고, 그 중 가장 큰 수의 값을 찾는다.
- 단, 6이나 9는 뒤집어서 사용가능하기 때문에 6의 사용 개수와 9의 사용 개수를 비교하여 더 적은 쪽에 사용 횟수를 추가한다.
const N = require('fs').readFileSync('/dev/stdin').toString().trim().split("");
// 플라스틱 숫자 세트를 위한 객체 배열
const set = {};
// 0~9까지 몇개 있는지 확인하기 위한 기본 세팅
for(let i = 0; i < 10; i++){
set[i] = 0;
}
// 받은 숫자값을 반복시킴.
N.forEach(num => {
// 만약 6이나 9를 받으면
if(num === '6' || num === '9'){
let six = set[6]; // 6의 사용 개수
let nine = set[9]; // 9의 사용 개수
// 만약 6의 개수가 9의 개수보다 적다면 6의 개수 증가, 아니면 9 개수 증가
if(six < nine) set[6]++;
else set[9]++;
} else {
set[num]++; // 나머지 숫자 개수 증가.
}
})
// 최대값을 구하기 위해 Array로 변경.
const arr = Object.keys(set).map((key) => set[key]);
// 최대값 출력.
console.log(Math.max.apply(null, arr))
3. 정리
- 이번에 처음으로 apply() 메서드를 사용해봤다. 매번 배열을 spread 연산자를 사용했었는데 간단하게 사용할 수 있어서 괜찮은 거 같다.
'코딩연습' 카테고리의 다른 글
[프로그래머스] 주차 요금 계산 (0) | 2023.08.07 |
---|---|
[백준 알고리즘] Node.js 1402. 아무래도이문제는A번난이도인것같다 (0) | 2023.08.07 |
[백준 알고리즘] Node.js 7568. 덩치 (0) | 2023.08.03 |
[백준 알고리즘] Node.js 11403. 경로 찾기 (0) | 2023.07.26 |
[백준 알고리즘] Node.js 10866. 덱 (0) | 2023.07.21 |