백준 1316 : 그룹 단어 체커 nodejs 풀이

김김김·2022년 4월 9일
0

알고리즘 노트

목록 보기
13/16

문제 링크

다음과 같이 풀었다.

const fs = require("fs");
const input = fs.readFileSync("/dev/stdin").toString().trim().split("\n");

let result = 0;

for (let i = 1; i < input.length; i++) {
  const charArr = input[i].split("");
  let flag = true;

  charArr.forEach((char) => {
    if (charArr.indexOf(char) !== charArr.lastIndexOf(char)) {
      const sliced = charArr.slice(
        charArr.indexOf(char),
        charArr.lastIndexOf(char) + 1
      );
      const getSlicedEl = [...new Set(sliced)];
      if (getSlicedEl.length !== 1) {
        flag = false;
      }
    }
  });
  if (flag) result++;
}

console.log(result);

오늘 복습한 함수 : array.slice()
기존의 배열을 건드리지 않으면서 배열의 특정 범위를 잘라내 새 배열을 반환한다.
위 식에서는 charArr에서 char이 find된 첫번째 인덱스와 마지막 인덱스가 다를 경우,
slice로 첫번째 인덱스부터 마지막 인덱스까지의 범위를 잘라낸 뒤 set으로 중복값을 제거해서 그 length가 하나인지 검사한다.
하나가 아니면? aba처럼 중간에 다른 문자가 낀 경우이므로 flag false 처리, 하나이면 aaa같은 경우이므로 검사를 통과한다.

profile
블로그 이전했습니다. https://sadie100.tistory.com/

0개의 댓글

관련 채용 정보