[白俊]5622番ダイヤル
15896 ワード
しょかい
ハードコーディングを避けるためにUnicodeを使用したが、結局ハードコーディングであった.
const solution = () => {
const str = input[0]
let answer = 0;
str.split('').map((_, i)=> {
const uniCode = str.charCodeAt(i)
if( 65 <= uniCode && uniCode <= 67) {
answer += 3
return
}
if( 68 <= uniCode && uniCode <= 70) {
answer += 4
return
}
if( 71 <= uniCode && uniCode <= 73) {
answer += 5
return
}
if( 74 <= uniCode && uniCode <= 76) {
answer += 6
return
}
if( 77 <= uniCode && uniCode <= 79) {
answer += 7
return
}
if( 80 <= uniCode && uniCode <= 83) {
answer += 8
return
}
if( 84 <= uniCode && uniCode <= 86) {
answer += 9
return
}
if( 87 <= uniCode && uniCode <= 90) {
answer += 10
return
}
})
console.log(answer)
}
solution()
他人を解く
Stringには関数も含まれています...arrしかないと思った.
let fs = require("fs");
let input = fs.readFileSync("/dev/stdin").toString().trim();
let phone = {
2: "ABC",
3: "DEF",
4: "GHI",
5: "JKL",
6: "MNO",
7: "PQRS",
8: "TUV",
9: "WXYZ",
};
let result = 0;
for (let i = 0; i < input.length; i++) {
for (let j = 2; j <= 9; j++) {
if (phone[j].includes(input[i])) {
result += j + 1;
break;
}
}
}
console.log(result);
二次試行
見逃した場所
アルファベットが含まれているので、答えに加えれば中断すべきで、残りは巡回しません!
const solution = () => {
const str = input[0]
let answer = 0;
let phone = {
2: 'ABC',
3:'DEF',
4:'GHI',
5:'JKL',
6:'MNO',
7:'PQRS',
8:'TUV',
9:'WXYZ'
}
str.split('').map((v)=> {
for( const [key, value] of Object.entries(phone) ) {
if(value.includes(v)) {
answer+= Number(key)+1;
break
}
}
})
console.log(answer)
}
solution()
Reference
この問題について([白俊]5622番ダイヤル), 我々は、より多くの情報をここで見つけました https://velog.io/@yooon26/백준-5622번-다이얼テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol