[백준] 5622번 다이얼

yoon Y·2022년 4월 18일
0

알고리즘 문풀

목록 보기
4/6

첫 풀이

하드 코딩을 피해기 위해 유니코드를 사용해봤지만 결국 하드코딩이었다.


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);

2차 시도

놓친 점
포함하는 알파벳이 있어서 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()
profile
#프론트엔드

0개의 댓글