[JS] 프로그래머스 코딩테스트 - 할인 행사

권이온·2025년 9월 7일

📚 문제

할인 행사

📣 풀이

  • 시도한 풀이
    10일씩 끊어서 확인하기

    function solution(want, number, discount) {
      let answer = 0;
      let obj = {};
      let obj2 = {};
      let count = 0;
    
      for (let i = 0; i < want.length; i++) {
          obj[want[i]] = number[i];
      }
    
      for (let i = 0; i < discount.length - 9; i++) {
          obj2 = {};
          count = 0;
          for (let j = 0; j < 10; j++) {
              if (obj2[discount[i + j]]) {
                  obj2[discount[i + j]] += 1;
              } else {
                  obj2[discount[i + j]] = 1;
              }
          }
    
          for (let k = 0; k < want.length; k++) {
              if(obj[want[k]] === obj2[want[k]]) count++;
          }
          if (count === want.length) answer++;
      }
    
      return answer;
    }

💫코드 리뷰 & 반성

[어려웠던 점]
아이디어는 나쁘지 않았는데 이게 10일까지 & discount가 
최대 10만이라 O(N*M) 떠도 최대 100만이라 시간 초과 안 뜬 거지
더 컸으면 시간 초과임.

[새롭게 알게된 점]
내 코드와 책 코드를 비교해봤을 때
일일이 count를 세는 대신, 두 객체를 직접 비교하는 함수를 사용하는 것이 더 효율적

참고

코딩 테스트 합격자 되기 자바스크립트 - 이선협, 박경록 저

profile
인생은 아름다워

0개의 댓글