알고리즘 풀이

[JAVASCRIPT] 백준 1475번 문제 풀이

Lv1_junior_dev 2022. 12. 10. 12:24

❗ 조건

1. 6은 9로 뒤집어 쓸 수 있고 9는 6으로 뒤집어서 쓸 수 있다 = 6,9는 동일한 숫자를 취급한다는 말이기 때문에 6의 누적 값과 9의 누적 값을 더한 후 2로 나눈 뒤 반올림 하면 6과 9를 동일한 숫자로 취급할 수 있음

2. 카드팩에서 가장 많이 쓰는 수를 기준으로 하면 카드팩을 몇 장 쓰는지 알 수 있음

let input = require('fs').readFileSync('dev/stdin').toString().trim().split('');

function objectFunc(arr) {
  let card = {6:0, 9:0}
  for(const el of arr) {
    card[el] = (card[el] || 0) + 1;
  }

    card[6] = Math.ceil((card[6] + card[9])/2)

    card[9] = 0

  return card;
}

console.log(Math.max.apply(null, Object.values(objectFunc(input))))

 

 

❗ 풀이

objectFunc()

1. 함수 아래 연산에서 인덱스 6번과 9번 없을 때 undefined 값을 방지하기 위해서 미리 객체에 6과 9의 key에 대한 value를 0으로 지정

2. input값을 기반으로 key 생성하면서 해당 key값이 있을 경우 그 key값에 value값에 1을 더함

3. "조건에 대한 풀이 1번 참고"

4. card object를 return

5. card object의 최대값을 출력