[白俊]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()