[프로그래머스] 풍선 터트리기 - JavaScript

이수동·2022년 2월 23일
0
post-thumbnail

프로그래머스 Level 3 - 풍선 터트리기


📌 문제 설명


📌 알고 있어야 하는 방법

특정 숫자는 자신의 앞 또는 뒤
둘중 하나보다만 작으면 무조건 최종값이 될 수 있다.


📌 생각한 풀이 방법

  1. 맨 앞과 뒤는 값과 상관없이 무조건 제외가능하기 때문에 제외를 하고 탐색한다.
  2. 앞에서 부터 비교를 하며, 맨 앞보다 값이 작으면 해당 값을 front로 변환 후 frontArr에 push한다
  3. 뒤에서 부터 비교를 하며, 맨 뒤보다 값이 작으면 해당 값을 back로 변환 후 backArr에 push한다
  4. 중복된 값을 제거한 후 맨 앞과 뒤를 의미하는 2를 더한 값을 반환한다.

📌 풀이

function solution(a) {
  let front = a[0];
  let back = a[a.length - 1];
  let frontArr = [];
  let backArr = [];

  for (let i = 1; i < a.length - 1; i++) {
    // 맨 앞과 뒤는 값과 상관없이 무조건 제외가능하기 때문에 제외를 하고 탐색
    let current = a[i];
    if (current < front) {
      // 앞에서 부터 비교
      front = current; // 맨 앞보다 값이 작으면 해당 값을 front로 변환
      frontArr.push(current); // frontArr에 push
    }
  }

  for (let i = 1; i < a.length - 1; i++) {
    // 맨 앞과 뒤는 값과 상관없이 무조건 제외가능하기 때문에 제외를 하고 탐색
    let current = a[a.length - i - 1];
    if (current < back) {
      // 뒤에서 부터 비교
      back = current; // 맨 뒤보다 값이 작으면 해당 값을 back로 변환
      backArr.push(current); // backArr에 push
    }
  }

  return [...new Set([...frontArr, ...backArr])].length + 2; // 중복된 값을 제거한 후 맨 앞과 뒤를 의미하는 2를 더한 값을 반환
}
profile
기록을 통한 성장하기 🧐

0개의 댓글