하드 코딩을 피해기 위해 유니코드를 사용해봤지만 결국 하드코딩이었다.
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()
스트링도 includes함수가 있었다... 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);
놓친 점
포함하는 알파벳이 있어서 answer에 더해주었다면 break를 해줘야 나머지를 순회하지 않는다!
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()