30주차 알고리즘

이동규·2024년 10월 7일

코테

목록 보기
21/22

괄호 회전하기

function solution(s = '}]()[{') {
  let answer = 0;
  let cnt = 0;
  const array = s.split('');
  while (cnt <= s.length - 1) {
    const pushArray = [];
    for (let index = 0; index < array.length; index++) {
      if (
        array[index] === '[' ||
        array[index] === '(' ||
        array[index] === '{'
      ) {
        pushArray.push(array[index]);
      } else if (
        (pushArray[pushArray.length - 1] === '[' && array[index] === ']') ||
        (pushArray[pushArray.length - 1] === '{' && array[index] === '}') ||
        (pushArray[pushArray.length - 1] === '(' && array[index] === ')')
      ) {
        pushArray.pop();
      } else if (
        array[index] === ']' ||
        array[index] === '}' ||
        array[index] === ')'
      ) {
        return cnt;
      }
    }
    if (pushArray.length === 0) {
      ++answer;
    }
    let firstValue = array[0];
    array.shift();
    array.push(firstValue);
    ++cnt;
  }

  return answer;
}
solution();

할인행사

function solution(
  want = ['banana', 'apple', 'rice', 'pork', 'pot'],
  number = [3, 2, 2, 2, 1],
  discount = [
    'chicken',
    'apple',
    'apple',
    'banana',
    'rice',
    'apple',
    'pork',
    'banana',
    'pork',
    'rice',
    'pot',
    'banana',
    'apple',
    'banana',
  ]
) {
  let answer = 0;
  for (let i = 0; i < discount.length - 9; i++) {
    const slice = discount.slice(i, i + 10);
    let flag = true;
    for (let j = 0; j < want.length; j++) {
      if (
        slice.filter((element, i) => element === want[j]).length !== number[j]
      ) {
        flag = false;
        break;
      }
    }
    if (flag) {
      answer += 1;
    }
  }

  return answer;
}

0개의 댓글