- (완료) 알고리즘 문제 6문제 풀기
- (애매~) node 책 읽기 : 알고리즘 풀다가 하루가 다갔다.
프로그래머스 알고리즘 중 '나누어 떨어지는 숫자 배열'을 풀었는데 자꾸 다른 테스트케이스에서 오류가 났다.

어떤 테스트 케이스에서 문제인지 모르는 상태였다.
answer = [-1] 이렇게 하면 안되는건가 싶어서 answer.push(-1)로 바꿔보기도 하고, 조건문도 else가 이상하게 되어있어서 else if로도 바꿔보기도 했다. 그러던 중 다른 분께 물어보니 테스트케이스를 하나 던져주셨다.

위의 테스트 케이스로 코드를 돌려보니 엉망진창인 값이 반환이 되었다.

이게 대체 무슨...!

array읭 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열 반환하는 함수 만드는데 divisor로 나누어 덜어지는 element가 하나도 없다면 배열에 -1을 반환하라. 나는 이게 한 조건문인줄로 판단했다.
그래서 나누어 떨어지는 값을 오름차로 배열하는 조건문에 else if로 element가 하나도 없다면 -1을 반환하는 것까지 넣은 것이었다.
이로써 조건에는 한 목적만 담아야한다는걸 깨달았다.
세상엔 진수가 많다. 사람말고 숫자표현 말이다. 2진수, 3진수, 6진수, 8진수, 10진수, 16진수...등등. 골때리게 하는건 이 숫자표현이 알파벳과 같이 표현이 됐을때다. 2진수의 경우 0b로, 16진수의 경우 0x로 표현이 가능하기때문에 문자가 섞였다고 숫자가 아닌건 아닌거다. 그래서 진수를 10진수로 바꿔주는 메소드, 함수를 알았다.
mdn을 검색하면 parseInt()도 두개가 나온다.Number.parseInt() 와 parseInt()
parseInt()함수는 문자열 인자를 받아 특정 진수(수의 진법 체계에서 기준이 되는 값)의 정수를 반환해준다. 말그대로 함수니까 소괄호안에 문자열을 넣고, 다음 매개변수는 안넣어도 되고 넣어도 된다. 안넣으면 자동으로 인식해서 변환해주는듯. 하지만 넣어야한다면 문자열의 진수타입을 적으면 된다.

근데 MDN에서 이렇게 말하는데... 꼭 넣어줘야하나보다.

문자열은 16진법의 수이고, 10진법의 수로 바꾸려고 했다. 코드를 보면 14, 16번째줄 코드는 잘 바뀐걸 볼 수 있고, 혹여나 10진법으로 바꾸고싶어 10을 잘못넣었다면 값이 이상하게 나올 수 있다.
Number.parseInt() 메소드는 parseInt()함수와 역할이 같다. 다만 진수를 정해주는 매개변수에서 다르다. (radix는 진수 매개변수)

parseInt()함수에서는 진수 기본 값이 10이 아니라고하고 Number.parseInt()에서는 16진수는 알아차리고 그 외에는 10으로 취급한다고 한다.
[참고 자료]
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/parseInt
N진수로 바꾸고 싶은 숫자.toString(N) 이용
