1. 나의 생각 흐름
제한 조건은 문제풀때 중요한 조건이 아니라고 생각하기에 패스! (왜냐하면 n을 입력할 사람들이 더 봐야할 조건이기때문에.. 괜히 신경쓰면 더 헷갈리니..) 입력받은 n을 배열로 변환한 후 다시 숫자배열로 변환해주기 => 배열의 내림차순 함수로 정렬하기 => 배열에서 하나의 원소로 묶어주기 => 문자열 배열을 숫자로 변환시켜주기
2. 코드 정리
function solution(n) {
let answer = 0;
//["1","1","8","3","7","2"] : .map(Number)를 뒤에 붙이지 않았을 경우
//split 함수뒤에 .map(Number)만 써주면 자동으로 문자가 숫자로 바뀌어 배열로 들어감
let arr = (n+'').split('').map(Number); // 결과값 : [1,1,8,3,7,2]
arr.sort(function(a, b){return b - a;}); // 결과값 : [8,7,3,2,1,1]
let str = arr.join(''); // 결과값 : "873211"
answer = Number(str); // 결과값 : 873211
return answer;
}
< "숫자->문자"로 변환 후 배열로 만들기 : split이용 >
타입이 숫자(number)인 경우 split을 사용할 수 없기 때문에 숫자에 ''을 더해 문자로 만들어주고, split('')을 사용하여
배열로 만들어 주는 방법!! ===> let arr = (n + '').split('').map(Number);
★ .map(Number)를 split 함수 뒤에 써주면 자동으로 문자=>숫자 바껴서 배열로 들어가게 됨! ★
** 문자 정렬 : arr.sort();
// 일반적인 정렬 방법 let arr = ["heum","star","love","forever"]; arr.sort();
** 숫자 정렬
//문자 정렬과 동일한 방법으로 정렬하면 아스키코드 순으로 정렬되어 숫자의 크기대로 정렬되지❌❌❌!! //오름 차순 정렬 let arr = [1, 111, 4, 222, 10, 3]; arr.sort(function(a,b) {return a-b;}); //내림 차순 정렬 let arr = [1, 111, 4, 222, 10, 3]; arr.sort(function(a,b) {return b-a;});
** join() 메서드
배열의 모든 요소를 연결해 하나의 문자열로 반환
// Array → String (배열 → 문자열): join() 이용 const arr = ['h', 'e', 'l', 'l', 'o']; const str1 = arr.join(); // 문자열 'h,e,l,l,o' const str2 = arr.join('+'); // 문자열 'h+e+l+l+o' const str3 = arr.join(''); // 문자열 'hello' //만약 arr.length가 0이면 빈 문자열을 반환합니다 // Array → String (배열 → 문자열): join() 이용 const arr = []; const str = arr.join(); // 문자열 '' //만약, 배열의 요소가 undefined 또는 null이면 빈 문자열로 변환합니다. // Array → String (배열 → 문자열): join() 이용 const arr = [undefined, null, 'hello']; const str1 = arr.join(); // 문자열 ',,hello' const str2 = arr.join(''); // 문자열 'hello'
** String → Array (문자열 → 배열)
[ split() 사용하기 ]
- String 객체를 지정한 구분자를 이용하여 여러 개의 문자열로 나눕니다.
// String → Array (문자열 → 배열) const str = 'Hello'; const arr = str.split(''); // 배열 ['h', 'e', 'l', 'l', 'o']
** Array → String (배열 → 문자열)
[ toString() 사용하기 ]
- toString()메서드는 지정된 배열 및 그 요소를 나타내는 문자열을 반환합니다.
※ 배열의 각 요소들이 쉼표(,)로 구분되어 하나의 문자열로 반환
// Array → String (배열 → 문자열): toString() 이용 const arr = ['h', 'e', 'l', 'l', 'o']; const str = arr.toString(); // 문자열 'h,e,l,l,o'
3. 다른 사람의 코드
function solution(n) {
let answer = "";
answer = String(n).split("").sort((a, b) => b-a).join('')
return Number(answer);
}
1. 주어진 숫자를 String() 을 통해서 문자열로 변환
2. split() 을 통해서 배열로 변형배열에서 sort((a,b) => b-a) 로 내림차순 정렬한다.
3. join('') 을 이용해서 배열의 모든 문자열을 하나의 문자열로 합쳐준다.
4. Number() 를 통해서 숫자로 바꿔주고 리턴해준다.
4. 결론
배열 부분에서 알아둬야 할 부분들이 많은 것 같다. 앞으로 공부 열심히해서 더 많이 익히도록 해야겠다.
'알고리즘' 카테고리의 다른 글
[Programmars] 같은 숫자는 싫어! (JavaScript) (0) | 2022.01.31 |
---|---|
[Programmars] 두 개 뽑아서 더하기 (JavaScript) (0) | 2022.01.31 |
[Programmers] 콜라츠 추측 (JavaScript) (0) | 2022.01.31 |
" 가위/바위/보 " 게임 (with J.S) (0) | 2022.01.04 |
로또번호 만들기(with J.S) (0) | 2022.01.04 |
댓글