[구름톤 챌린지] 문자열 나누기 (JS)

hhkim·2023년 8월 21일
0

Algorithm - JavaScript

목록 보기
109/188
post-thumbnail

풀이 과정

  1. 앞에서부터 1개, 2개, ..., 문자열 길이 - 2개만큼 자른 부분 문자열을 set에 담기
  2. 1의 결과를 배열로 변환
  3. 오름차순 정렬
  4. 배열 요소를 키로, 순서를 값으로 하는 객체 생성
  5. 주어진 문자열을 3등분하면서 점수 매기기 => 최댓값 갱신

코드

const readline = require('readline');
let rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
});
let input = [];
rl.on('line', (line) => {
  input.push(line.trim());
  if (input.length === 2) {
    rl.close();
  }
});

rl.on('close', () => {
  let str = input[1];
  const set = new Set();
  for (let i = 0; i < str.length; ++i) {
    for (let j = 1; j <= str.length - 2; ++j) {
      set.add(str.slice(i, i + j));
    }
  }
  const arr = [...set];
  arr.sort();

  const obj = {};
  arr.forEach((e, i) => (obj[e] = i + 1));

  let result = 0;
  for (let i = 1; i < str.length; ++i) {
    for (let j = i + 1; j < str.length; ++j) {
      let tmp = obj[str.slice(0, i)];
      tmp += obj[str.slice(i, j)];
      tmp += obj[str.slice(j)];
      result = Math.max(result, tmp);
    }
  }
  console.log(result);
  process.exit();
});

🤔

1시간이 넘게 걸렸다.
2주차 됐다고 이렇게 갑자기 어려워지다니..! 완주가 멀어지는 기분이지만 ㅋㅋㅋ
그래도 풀었다!
완전 탐색이 뭔지 이제 느낌이 좀 오는 것 같다.

0개의 댓글