1. 문제 설명
우주여행을 하던 머쓱이는 엔진 고장으로 PROGRAMMERS-962 행성에 불시착하게 됐습니다. 입국심사에서 나이를 말해야 하는데, PROGRAMMERS-962 행성에서는 나이를 알파벳으로 말하고 있습니다. a는 0, b는 1, c는 2, ..., j는 9입니다. 예를 들어 23살은 cd, 51살은 fb로 표현합니다. 나이 age가 매개변수로 주어질 때 PROGRAMMER-962식 나이를 return하도록 solution 함수를 완성해주세요.
2. 첫번째 정답코드
🔸배우고 싶은 코드
function solution(age) {
let str = 'abcdefghij'//1) a-j까지 하나의 문자열에 담음
return Array.from(age.toString()).map(t => str[+t]).join('');
//+'2' 결과 값 2 t에다가 +를 붙이면 문자열이 숫자로 변함
}
🔸나에게 쉬운 코드
function solution(age){
let answer = '';
const stringAge = String(age); //나이를 문자열로 바꾸기
for(let i = 0;i<stringAge.length;i++){
stringAge[i]; //0번째 숫자, 1번째 숫자 들어올자리 마련
if(stringAge[i]==="0"){
answer = answer + "a"
}
if(stringAge[i]==="1"){
answer = answer+"b"
}
if(stringAge[i]==="2"){
answer = answer+"c"
}
if(stringAge[i]==="3"){
answer = answer+"d"
}
if(stringAge[i]==="4"){
answer = answer+"e"
}
if(stringAge[i]==="5"){
answer = answer+"f"
}
if(stringAge[i]==="6"){
answer = answer+"g"
}
if(stringAge[i]==="7"){
answer = answer+"h"
}
if(stringAge[i]==="8"){
answer = answer+"i"
}
if(stringAge[i]==="9"){
answer = answer+"j"
}
}
return answer
}
function solution(age) {
let 알파벳 = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j"];
let answer = "";
age = age.toString();
for(let i=0; i<age.length; i++){
answer += 알파벳[age[i]];
}
return answer;
}
알고리즘 스터디때 물어볼질문 : 대체 ...나이를 문자열로 바꾼다는 생각을 어떻게 하는거지?
2-1) 정답코드 메서드 설명
2-1-1) Array.from()
Array.from 은 반복 가능한 객체 또는 유사배열 객체를 복사해 새로운 객체 배열을 반환한다.
const arr = [1,2,3,4,5];
const newArr = Array.from(arr);
console.log(arr);
console.log(newArr);
from()은 두번째 인자에 선택적으로 매핑할 함수를 지정할 수 있음. 이 경우 주어진 배열을 복사할때 각각의 요소에 지정된 함수를 실행하고, 그 결과를 배열로 반환한다.
const arr = [1,2,3,4,5];
function plusTwo(number){
return number +2;
}
const newArr = Array.from(arr,plusTwo);
console.log(arr); //[1, 2, 3, 4, 5]
console.log(newArr);//[3, 4, 5, 6, 7]
2-1-2) 숫자를 문자열로 변환하는 메서드 toString(), String()
const num = 5;
const str1 = num.toString();
const str2 = (100).toString();
const str3 = (-10.11).toString();
console.log(typeof(str1))
console.log(typeof(str2))
console.log(typeof(str3))
const num = 5;
const str1 = String(num);
const str2 = String(100);
const str3 = String(-10.11);
console.log(typeof(str1))
console.log(typeof(str2))
console.log(typeof(str3))
2-1-3) join()
배열의 모든 요소들을 연결한 하나의 문자열을 반환한다.
join() 안 매개변수로는 배열의 각 요소를 구분할 문자열을 지정한다. 생략하면 배열의 요소들이 쉼표로 구분된다.
빈 문자열이면 모든 요소들 사이에 아무 문자도 없이 연결된다.
const elements = ['Fire', 'Air', 'Water'];
console.log(elements.join());
// expected output: "Fire,Air,Water"
console.log(elements.join(''));
// expected output: "FireAirWater"
console.log(elements.join('-'));
// expected output: "Fire-Air-Water"
'알고리즘 테스트' 카테고리의 다른 글
프로그래머스 lv0-자바스크립트) 문자열 안에 문자열 (0) | 2022.12.03 |
---|---|
숨어있는 숫자의 덧셈 (0) | 2022.12.03 |
프로그래머스-javascript) lv0 배열회전시키기 (0) | 2022.11.26 |
프로그래머스 Lv - 0 분수의 덧셈 (0) | 2022.10.31 |