圧縮プログラム(level 2)
8800 ワード
私の解答(解答時間:52分)
function solution(msg) {
var answer = [];
let dict = new Map();
for (let i = 65; i <= 90; i++) {
dict.set(String.fromCharCode(i), i-64);
}
let arrM = msg.split("");
let count = 1;
for (let i = 0; i < arrM.length-1; i+=count) {
for (let j = 1; j <= arrM.length; j++) {
count = j;
if (!dict.has(arrM.slice(i,i+j+1).join(""))) {
dict.set(arrM.slice(i,i+j+1).join(""), dict.size+1);
answer.push(dict.get(arrM.slice(i,i+j).join("")));
break;
} else {
if (i+j === arrM.length-1) {
answer.push(dict.get(arrM.slice(i,i+j+1).join("")));
return answer;
}
}
}
}
answer.push(dict.get(arrM[arrM.length-1]));
return answer;
}
最初は,arm長をwhile文で0とループし,配列長を減らすように行ったが,タイムアウトが続いた.接合配列を判断するのに長い時間がかかり,for文で代用しcountという変数を設計し,処理後の文字をスキップできるようにした.Reference
この問題について(圧縮プログラム(level 2)), 我々は、より多くの情報をここで見つけました https://velog.io/@htogether7/프로그래머스-압축-level-2テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol