[Level1] 7. 31 ~ 35
하루 세문제씩 꾸준히 풀기! 였으나 문제가 너무 쉬워서 5개를 풀어보겠다😂
31. 제일 작은 수 제거하기
function solution(arr) {
arr.splice(arr.indexOf(Math.min(...arr)), 1)
return arr.length ? arr : [-1]
}
우와. 베스트풀이랑 똑같다!
다만 맨날 헷갈리는 걸 한번만 짚고 가자
- splice : 시작위치부터 갯수
- slice : 시작위치부터 끝 위치
32. 정수 내림차순으로 배치하기
function solution(n) {
let arr = (n + "").split("");
arr.sort((x, y) => y - x);
let str = "";
for (let i = 0; i < arr.length; i++) {
str += arr[i];
}
return str / 1;
}
어제 놓쳤던 string to arr 를 split으로 이용했다!
best 풀이
function solution(n) {
const newN = n + "";
const newArr = newN
.split("")
.sort()
.reverse()
.join("");
return +newArr;
}
정말 arr 함수 사용의 적절한 예다.
나는 for 문을 통해 하나하나 더하던걸 여기서는 join(““)을 활용했다.
이게 더 간결하니 좋은 것 같다!
33. 정수 제곱근 구하기
function solution(n) {
for (let i = 1; i * i <= n; i++) {
if (i * i === n) {
return (i + 1) * (i + 1);
}
}
return -1;
}
best 풀이
function nextSqaure(n){
var result = 0;
var n = Math.sqrt(n);
result = Number.isInteger(n) ? Math.pow(n+1, 2) : 'no';
return result;
}
제곱근을 먼저 구해서 하는 방식…
for 문 안돌아도 되니 시간복잡도 최고일 것 같다!
pow 쓰는것도 그렇고 본 받자!!
34. 자릿수 더하기
function solution(n) {
let arr = (n + "").split("");
let sum = 0;
for (let i = 0; i < arr.length; i++) {
sum += arr[i] / 1;
}
return sum;
}
best 풀이
return (n+"").split("").reduce((acc, curr) => acc + parseInt(curr), 0)
string 배열의 누적합도 reduce로 바로 구할 수 있다는 것 알아두기!
35. 자연수 뒤집어 배열로 만들기
function solution(n) {
return (n + "")
.split("")
.reverse()
.map((item) => parseInt(item));
}
우와 한줄짜리 숏코딩 성공했다!
스스로 성장하고 있음을 느껴서 너무 뿌듯하다..!!
best 풀이
function solution(n) {
// 문자풀이
// return (n+"").split("").reverse().map(v => parseInt(v));
// 숫자풀이
var arr = [];
do {
arr.push(n%10);
n = Math.floor(n/10);
} while (n>0);
return arr;
}
효율적인 면으로는 string 으로 바꿔서 푸는 것보다 number 그대로 푸는 것이 더 좋다.
위 코드는 number로 정석적으로 푼 방법!
와…무슨 수학자같다…ㅋㅋㅋ 멋지다.
이 방법도 기억해두기!