JS 알고리즘 뽀개기 - 1

👉🏼 KIM·2023년 5월 16일
0

알고리즘

목록 보기
3/4

정수 내림차순으로 배치하기

function solution(n) {
    var answer = 0;
}

문제만 봤을때는 입력받은 매개변수를 sort를 사용해서 정렬하면 되겠다! 싶었는데 자꾸 타입에러가 났다ㅠㅠ
sort()를 찾아보니 숫자를 정렬할 때 주의할 점이 있다고 한다.
sort() 메서드가 정렬기능으로 아주 탁월하지만 배열의 요소를 문자열로 판단하기 때문에 타입에러가 난 것이다.

매개변수 n은 정수이므로 number라 오류가 있던 것 같다.
그래서 낸 결론은 입력받은 매개변수를 문자로 바꿔서 배열에 넣어서 정렬하고 다시 숫자화 하기였다! (다른 사람의 풀이 보니 숫자로 푸는게 더 실행속도가 빠르다고 하는걸 보니 굳이 문자열로 안바꿔도 되나보다 ..)

숫자를 배열로 넣어 정렬해서 배열의 요소를 빼내어 이어붙이는 작업을 하기 위해 join()과 split()을 사용했다.

Array.join() : 배열의 모든 요소를 연결해 하나의 문자열로 만든다.
String.split() : 소괄호 내의 기호로 문자열을 나누어 배열로 만든다.

즉, .split()은 문자열을 배열로 나누고, join()은 배열을 문자열로 이어 붙인다고 생각하면 된다.

function solution(n) {
    var answer = 0;
    answer = (n).toString().split("").sort((a,b)=> b-a).join(""); //string

	return +answer; // +를 붙이면 숫자로 바뀜!
}

다른 사람의 풀이를 보니 정말 다양한 방법이 있었다.

  • n을 (n + "")로 하면 문자가 된다!
  • parseInt, Math.floor 등을 사용하여 숫자형과 문자형을 넘나들며 다양한 방법으로 정수 내림차순이 가능했다.

JS에서 문자열을 숫자로 변환하는 방법

function solution(str) { }
  1. Number(str)
  2. parseInt(str)
  3. Math()
    Math.ceil(str);
    Math.floor(str);
    Math.round(str);
    Math.round(str);
  4. 곱셈과 나눗셈으로 문자열을 숫자로 변환하는 방법
    str/1, str*1
  5. 단항 연산자를 사용하여 문자열을 숫자로 변환하는 방법
    +str
  6. 비트 연산자(Bitwise Operator)를 사용하는 방법
    비트 연산자는 32비트 정수로 변환되는데 2진수 표현으로 연산을 수행한다고 한다. 이때 ~ 기호는 비트를 반대로 바꾸어준다.
    ~~str

마무리

차근차근 알고리즘을 풀면서 자바스크립트를 공부하고 있는데, 숫자형과 문자열을 가지고 만든(장난질 친) 문제가 많아 보인다.
더 고민해보고 직접 풀어보면서 내 것으로 만들고 싶다!! 화이링 🙋

profile
프론트는 순항중 ¿¿

0개의 댓글