반응형
문제1 : 정수 제곱근 판별
1.1 풀이(오답)
- 제곱근을 구하는 Math.sqrt()를 이용 num을 초기화
- 양의 제곱근 중 가장 작은 정수가 2라는 점을 이용,
- num이 2와 같거나 크다면 Math.pow를 이용 num+1에서 제곱하였으나 아래와 같은 오답이 존재
1) num으로 정수가 아닌 값이 출력되는 경우 (ex : 3.123412412...)
2) solution(1)을 실행하는 경우
function solution(n) {
let num = Math.sqrt(n);
return num/1 >= 2 ? Math.pow(num+1, 2) : -1;
}
1.2 풀이(수정)
- num을 1로 나눈 나머지가 0인지 확인하여 정수 여부를 체크
function solution(n) {
let num = Math.sqrt(n);
return num % 1 === 0 ? Math.pow(num+1, 2) : -1;
}
1.3 다른풀이
- isInteger()를 통해 정수인지 확인하는 방법
function solution(n) {
var result = 0;
var n = Math.sqrt(n);
result = Number.isInteger(n) ? Math.pow(n+1, 2) : 'no';
return result;
}
문제2 : 자릿수 더하기
2.1 풀이
- 반복문을 사용하여 각 자릿수를 answer에 더한다.
- 반복할 길이를 측정하기 위해 String(n)으로 문자화시켜 str에 담는다
- 반복문을 돌면서 answer에 parseInt(str[i])의 값을 더한다.
- parseInt는 str을 다시 숫자로 바꿔 연산하기 위함
function solution(n){
let answer = 0;
let str = String(n);
for(let i=0; i<str.length; i++){
answer += parseInt(str[i]);
}
return answer;
}
2.2 다른 풀이
- 마찬가지로 n을 문자화 시킨 뒤 ("")을 기준으로 나눈다.
- reduce()메서드를 사용하여 누산한다.
function solution(n){
return String(n).split("").reduce((a, b) => a + parseInt(b), 0)
}
문제3 : 제일 작은 수 제거하기
3.1 풀이(오답)
- 먼저 reverse()로 배열을 역순 정렬한다
- 반복문을 이용, (배열의 길이-1)에서 역순으로 1까지 돌려서 마지막 숫자를 제거한다.
- 테스트 케이스는 통과했지만, 제출해보니 틀린 코드였다.
- 무엇이 틀렸을까..?
function solution(arr) {
let result = [];
let answer = arr.reverse();
for(let i=answer.length-1; i>=1; i--){
result.push(answer[i]);
}
return result.length >= 1 ? result : [-1];
}
3.2
반응형
'항해99' 카테고리의 다른 글
[항해99]WIL(2주차)_ECMAScript, ES5~ES6 (1) | 2021.11.14 |
---|---|
[항해99]TIL_알고리즘5 (2) | 2021.11.12 |
[항해99]TIL_알고리즘3 (0) | 2021.11.10 |
[항해99]TIL_알고리즘2 (0) | 2021.11.09 |
[항해99]TIL_알고리즘1 (0) | 2021.11.08 |