CodeKata #2
알고리즘이 너무너무 어렵다..
이해가 안가는 건 아직 블로그에 쓸 수 없기에
이해한 문제만 풀어보도록 하겠습니다.
문제
숫자인 num을 인자로 넘겨주면, 뒤집은 모양이 num과 똑같은지 여부를 반환해주세요.
num: 숫자 return: true or false (뒤집은 모양이 num와 똑같은지 여부)
예를 들어, num = 123 return false => 뒤집은 모양이 321 이기 때문
num = 1221 return true => 뒤집은 모양이 1221 이기 때문
num = -121 return false => 뒤집은 모양이 121- 이기 때문
num = 10 return false => 뒤집은 모양이 01 이기 때문
문제 접근 방법
저는 우선 이 문제를 풀기위해서 숫자로 들어온 인자를
문자열로 바꾼 후, 배열화 시켜 reverse 메소드를 사용해야겠다고 생각했었습니다.
그 다음 배열화 된 문자들을 다시 합쳐 문자열로 반환 후 숫자열로 반환해서 출력시키게 끔 해야겠다고 생각했고
const sameReverseNumber = num => {
let str = String(num).split("").reverse()
let output = Number(str.join(""));
if (num === output) {
return true
} else {
return false
}
}
동작과정
우선 변수 str에 인자로 들어온 숫자를 String 메소드를 사용해 문자열로 바꿔주고, split 메소드를 사용해서,각각의 숫자들을 배열의 요소로 만들어줍니다.
예를 들어
인자로 123 이 들어 왔다면, "123"으로 변경 후
["1","2","3"]으로 변경시킨 상태입니다.
이후 reverse 메소드 사용해서 자리를 바꿔줍니다.
그럼, ["3","2","1"] 이 됩니다.
즉, 변수 str에 할당 된 값은 배열 ["3","2","1"] 입니다.
그 다음.
변수 output에 변수 str을 할당하고 배열의 모든 요소를 연결해 문자열로 변환해주는 join 메소드를 사용해서, 값을 "3,2,1"로 변환시킨 후 Number 메소드로 감싸줘서 값을
숫자 321로 변환시킵니다.
즉, output 에는 321이란 숫자가 할당 된 것 입니다.
이제 조건문을 사용해서
if (num === output ) {
return true
}else {
return false
}
로 작성하여,
만약에 인자로 들어온 숫자가 값이 뒤바뀐 숫자가 할당 되 있는 변수output의 값과 같다면 true를 출력하고,
아니라면 false를 출력하는 식을 만들었습니다.
이상입니다.
Author And Source
이 문제에 관하여(CodeKata #2), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@zlrz6706/CodeKata-2저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)