Algorithm JS | 프로그래머스 코딩테스트_외계행성의 나이

앙두·2023년 3월 21일
0

Algorithm

목록 보기
4/17

📑 문제

  • 인수 age 는 number type 으로 들어온다. (age 는 1,000 이하)
  • age의 각 자리 숫자에 맞는 알파벳(소문자)이 반환되어야 한다.

🤓 나의 풀이

function solution(age) {
  const ageStr = age.toString()
  const alphabetAge = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']

  let programmers962_age = []
  for(let i = 0; i < ageStr.length; i++){
 programmers962_age.push(alphabetAge[ageStr[i]])
  }
  const res = programmers962_age.join('')

  return res
}
  • 인수로 받는 age 가 number type 이기 때문에, string 형식으로 변환시켜줍니다. (string은 곧 배열로 사용이 가능해지기 때문입니다.)
  • age의 각 자리의 숫자는 최소 0부터 최대 9까지 이기때문에, length가 9인 알파벳 배열을 생성시켜줍니다.
  • string 타입의 age는 ageStr입니다. ageStr의 각 요소에 순회하며 접근하기 위하여 for 문을 사용합니다.
  • for 문을 돌기 전, for문의 값이 담길 배열을 하나 선언해줍니다. (= programmers962_age)
  • ageStr의 index 번호가 알파벳 배열의 index로 접근하여, 해당 요소가 programmers962_age에 담기도록 push를 해줍니다.
  • 각 요소가 담긴 programmers962_age배열을 join함수로 하나의 string으로 만들어 res에 담아줍니다.
  • res 를 return 해줍니다.

차근차근 영차영차 풀어냈다 🥹
이후, 다른사람들의 풀이를 보며 코드를 좀 더 간결하게 수정할 수 있었다.


💫 리팩토링 (다른 사람들의 풀이 참고)

💡 programmers962_age = [] ➡️ programmers962_age = ""

반환값은 string 이 되어야 하니, 애초부터 string으로 programmers962_age를 선언해줄 수 있다.
배열선언 및 초기화만 하다보니... 애초부터 string으로 선언해줄 수 있는걸 몰랐지 모야
그럼 join함수를 쓰는 등 부가적인 가공은 필요없어지고 간단한 연산만 추가하면 된다! 👇🏻

function solution(age) {
  const ageStr = age.toString()
  const alphabetAge = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']
  
  let programmers962_age = ""
  for(let i = 0; i < ageStr.length; i++){
 	programmers962_age += alphabetAge[ageStr[i]]
  }
	return programmers962_age
  }

🤭 (수줍게 웃기)


👍🏻 제일 간단한 풀이 (다른 사람들의 풀이 참고)

function solution(age) {
  return age
    .toString()
    .split("")
    .map((v) => "abcdefghij"[v])
    .join("");
}

😨... 치..
age를 string으로 변환 후, split으로 한글자씩 나눠주고, map을 돌려서 각 요소를 알파벳요소의 인덱스요소로 넣어준 다음, join으로 하나의 string으로 합쳐준다.

profile
쓸모있는 기술자

0개의 댓글