グループ単語checker-javascript
質問(ソース)
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);
今日の勉強と教訓
実は私はこのような問題を何度も見たことがあるようです.毎回難しく考えて、問題を解いているようです.
最良の答えでは、確かに私が解いたより簡単なアルゴリズムですべての状況の数を決定することができます.
似たような問題がたくさんあるように、この方法は理解して覚えなければならない.
Reference
この問題について(グループ単語checker-javascript), 我々は、より多くの情報をここで見つけました https://velog.io/@donq/그룹-단어-체커-javascriptテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol