(백준) 할리갈리

hwisaac·2024년 11월 2일
0

코테TIL

목록 보기
6/20

문제링크

https://www.acmicpc.net/problem/27160

문제풀이

const filePath = process.platform === "linux" ? 0 : "./input.txt";
let [N, ...arr] = require("fs").readFileSync(filePath).toString().trim().split("\n");

let dict = {}
arr.forEach(item => {
    const [fruit, num] = item.split(' ')

    if (dict.hasOwnProperty(fruit)){
        // console.log(dict)
        dict[fruit] = dict[fruit] + Number(num)
    }else{
        dict[fruit] = Number(num)
    }
    
})

if (Object.values(dict).includes(5)){
    console.log("YES")
}else{
    console.log("NO")
}

코드 흐름 및 로직

  • dict 객체를 사용하여 과일 종류를 키로, 과일 개수를 값으로 저장했습니다. 이를 통해 빠르게 과일 개수를 누적할 수 있습니다.
  • 각 과일의 개수를 누적한 후, Object.values(dict).includes(5)로 정확히 5개인 과일이 있는지 확인하여 답을 도출합니다.

개선사항

초기화 개선: 과일 종류가 정해져 있으므로, 초기에 각 과일의 개수를 0으로 설정하는 방법도 있습니다.

const dict = {
  STRAWBERRY: 0,
  BANANA: 0,
  LIME: 0,
  PLUM: 0
};

TIL (Today I Learned):

오늘은 JavaScript에서 객체를 활용하여 입력 데이터에 따라 카운트를 누적하는 방법을 익혔습니다. 특히, 배열의 각 요소를 순회하며 조건에 따라 객체의 값을 업데이트하고, 최종적으로 원하는 조건을 충족하는지 확인하는 로직을 구현했습니다.

또한, 문제를 풀 때 입력 데이터를 어떻게 효율적으로 처리할지, 그리고 중간 과정이 아닌 최종 결과에 초점을 맞춰야 하는 상황을 구분하는 것이 중요하다는 것을 깨달았습니다. 이 문제에서는 모든 카드를 펼친 후의 상태를 고려해야 했기 때문에, 각 단계별로 조건을 확인하는 것이 아니라 최종 누적 값을 기반으로 판단해야 했습니다.

0개의 댓글