그룹 단어 체커 - javascript

10801 단어 백준코테백준

문제 (출처)

https://www.acmicpc.net/problem/1316

나의 접근

  • 우선 단어의 철자 하나 씩 indexOf를 통해 현재 철자 이후에 있는지 확인 한다.

  • 있다면 현재 index 다음이 맞는지 확인한다. 아니라면 break로 그룹단어가 아니라고 인식한다.

풀이

나의 풀이

const fs = require("fs");
const filePath = process.platform === "linux" ? "/dev/stdin" : "./input.txt";
let input = fs.readFileSync(filePath).toString().split('\n');


let result = 0;
for (let i = 1; i <= input[0]; i++){
    let a = input[i].split('');
    for (let j = 0; j < a.length; j++){
        if (a.indexOf(a[j], j + 1) === -1){
            if(a.length - 1 === j){ // a의 마지막 글자라면
                result++;
            }
            continue;
        }else if(a.indexOf(a[j], j + 1) === j + 1){
            continue;
        }else{
            break;
        }
    }
}
console.log(result);

모범답안

var N = parseInt(input.shift());
var count = 0;

function solution(str){
  var record = [];
  for(var i = 0, length = str.length; i < length; i++){
    if(record.indexOf(str[i]) === -1){
      record.push(str[i]);
    } else {
      if(record[record.length -1] !== str[i]){
        return;
      }
    }
  }
  count++;
}

for(var i = 0; i < N; i++){
  solution(input[i])
}

console.log(count);

오늘의 배운점 및 교훈

  • 사실 이런 문제를 여러번 봤던거 같다. 매번 어렵게 생각하고 문제를 풀었던거 같다.

  • 모범답안에서는 확실히 내가 풀었던 것보다 간단한 알고리즘으로 모든 경우의 수를 확인 할 수 있다.

  • 비슷한 문제가 많은 것처럼 해당 방법은 이해하고 외워둬야겠다.

좋은 웹페이지 즐겨찾기