Programmers—[3]圧縮
6690 ワード
💻 [3]圧縮
に質問
https://programmers.co.kr/learn/courses/30/lessons/17684
勘定科目
function solution(msg) {
msg = msg.split('');
var answer = [];
const dict = [];
for (let i = 0; i < 26; i++) {
dict[i] = String.fromCharCode([i + 65]);
}
for (var count = 0; count < msg.length; count++) {
var currentEnter = msg[count];
var nextEnter = msg[count + 1];
while (dict.includes(currentEnter + nextEnter) && count < msg.length) {
count++;
currentEnter = currentEnter + nextEnter;
nextEnter = msg[count + 1];
}
answer.push(dict.indexOf(currentEnter) + 1);
dict.push(currentEnter + nextEnter);
}
return answer;
}
var msg = 'KAKAO';
console.log(solution(msg));
¥¥АААААААААА
問題はおかしい.最初に紹介した圧縮アルゴリズムを採用することはできませんが、後述の例の進行方法をよくチェックしてください.
例題の動作方式が一番重要です.
最初は問題の動作を忠実に表現しなければならない.
CurrentEnter、nextEnter、response、dict等
実装に必要な要素を作成し、これらの要素の変化を観察して実装します.
function solution(msg) {
msg = msg.split('');
var answer = [];
const dict = [];
for (let i = 0; i < 26; i++) {
dict[i] = String.fromCharCode([i + 65]);
}
for (var count = 0; count < msg.length; count++) {
var currentEnter = msg[count];
var nextEnter = msg[count + 1];
while (dict.includes(currentEnter + nextEnter) && count < msg.length) {
count++;
currentEnter = currentEnter + nextEnter;
nextEnter = msg[count + 1];
}
answer.push(dict.indexOf(currentEnter) + 1);
dict.push(currentEnter + nextEnter);
}
return answer;
}
var msg = 'KAKAO';
console.log(solution(msg));
最初のcurrentEnterとnextEnterはmsgの最初の要素と2番目の要素です.
currentEnter+nextEnterが事前に存在する場合、現在の要素は現在の要素+の後の要素です.
(ここで例をよく見ると、どうせ次の要素は1文字しかありません.)
ここでcount++の原因はmsgが2つの格子を超えているからです.
nextEnterはcurrentEnterの次の要素なのでcurrentEnterはcountなので+1です.さっきcount++になりましたが、全部で2格を超えました.
countは文字列の長さを超えてはいけません.
currentEnter+nextEnterが辞書にない場合、
現在の入力を追加し、事前に追加します.
学識
객체.속성
であり,対応する属性がない場合は객체.속성 === undefinded
形態である.Reference
この問題について(Programmers—[3]圧縮), 我々は、より多くの情報をここで見つけました https://velog.io/@doodream/Programmers-3차-압축テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol