⛵ 항해99/개강준비

[JavaScript 문법] 프로그래머스_6일차

hhhhy 2023. 8. 2. 17:40

 자릿수 더하기 

  • 문제 주소

https://school.programmers.co.kr/learn/courses/30/lessons/120906

 

  • 나의 풀이
function solution(n) {
    var answer = 0;

    let str = String(n);
    for (let i = 0; i < str.length; i++) {
        answer += Number(str[i]);
    }
    return answer;
}

console.log(solution(1234));

 

  • 알게 된 것
📍 String()과 Number() 설명

function solution(n) {
    var answer = 0;
    // console.log(n);  // 1234
    // console.log(typeof n);  // number

    let str = String(n);
    // console.log(str);  // 1234
    // console.log(typeof str);  // string
    // String() 함수 : 숫자를 문자열로 변환
    // 숫자를 문자열로 바꾸면 숫자의 각 자릿수가 문자열의 각 문자로 나뉨
    // 이를 통해 아래 for문에 숫자의 각 위치에 접근할 수 있음

    for (let i = 0; i < str.length; i++) {
        answer += Number(str[i]);
        // Number() 함수 : 문자열을 숫자로 변환
        // 위에서 String() 함수를 사용하여 입력된 숫자를 문자열로 변환했고, 그걸 다시 Number()로 숫자 변환해 덧셈 실행
    }
    return answer;
}

console.log(solution(1234));  // 10

 

 순서쌍의 개수(상) 

  • 문제 주소

https://school.programmers.co.kr/learn/courses/30/lessons/120836

 

  • 나의 풀이
function solution(n) {
    let newn = [];

    for (let i = 1; i <= n; i++) {
    // i가 1부터 n(20)까지 증가하면서 반복
        if (n % i === 0) {
        // n(20)을 i로 나눈 나머지가 0인지 확인하고
            newn.push(i);
            // 나눠지면 newn 배열에 추가하기
        }
    } return newn.length;
    // 배열의 길이(개수) 세기
}

console.log(solution(20))  // 6

 

 개미군단(상) 

  • 문제 주소

https://school.programmers.co.kr/learn/courses/30/lessons/120837

 

  • 나의 풀이
function solution(hp) {
    return Math.floor(hp / 5) + Math.floor((hp % 5)/3) + ((hp % 5)%3);
}
console.log(solution(23));

 

 숨어있는 숫자의 덧셈 (상) 

  • 문제 주소

https://school.programmers.co.kr/learn/courses/30/lessons/120851

 

  • 나의 풀이
function solution(my_string) {
    let num = my_string.split("");
    // 문자열을 하나씩 분리하여 배열로 만들기
    // [ 'a', 'A', 'b', '1', 'B', '2', 'c', 'C', '3', '4', 'o', 'O', 'p' ]

    let result = 0;
    // result는 0부터 시작함

    for (let i = 0; i < num.length; i++) {
        if (Number(num[i])) {
            result += Number(num[i])
            // Number를 사용해서 숫자로 변환하기
            // 숫자변환이 실패하면 NaN(Not a Number)이 반환되는데 NaN은 falsy한 값으로, 실행되지 않음
            // 숫자일때는 result에 더해줌
        }
    }
    return result
} console.log(solution("aAb1B2cC34oOp"))  // 10

 

  • 알게 된 것
📍 split(' ') 메서드 사용법
- String 객체를 지정한 구분자를 이용하여 여러 개의 문자열로 나눔

# 예시
const str = 'The quick brown fox jumps over the lazy dog.';
const words = str.split(' ');
	console.log(words);  // ["The", "quick", "brown", "fox", "jumps", "over", "the", "lazy", "dog."]
	console.log(words[3]);  // fox
const chars = str.split('');
	console.log(chars);  // ["T", "h", "e", " ", "q", "u", "i", "c", "k", " ", "b", "r", "o", "w", "n", " ", "f", "o", "x", " ", "j", "u", "m", "p", "s", " ", "o", "v", "e", "r", " ", "t", "h", "e", " ", "l", "a", "z", "y", " ", "d", "o", "g", "."]
	console.log(chars[8]);  // k
const strCopy = str.split();
	console.log(strCopy);  // [ 'The quick brown fox jumps over the lazy dog.' ]

# 참고
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/String/split

 

 문자열 정렬하기 (1) 

  • 문제 주소

https://school.programmers.co.kr/learn/courses/30/lessons/120850

 

  • 나의 풀이
function solution(my_string) {
    let answer = [];
    for (let i = 0; i < my_string.length; i++) {
        if (!isNaN(my_string[i])) {
            answer.push(Number(my_string[i]));
            // !isNaN(my_string[i])은 !를 넣어서 숫자일때가 참임
            // 숫자라면 answer에 i를 넣는데, Number 형태로 넣기
            // Number 안쓰면 [ '1', '2', '2', '3', '9' ] 로 나옴
        }
    }
    return answer.sort(function (a, b) {
        return a - b;
        // 오름차순으로 정렬해서 결과값내기
    });
} console.log(solution("hi12392"))  // [1, 2, 2, 3, 9]

 

  • 알게 된 것
📍 isNaN()과 Number.isNaN()과 !isNaN()
- isNaN() : 주어진 값이 NaN이면 true, 아니면 false
- Number.isNaN() : isNaN()의 더 엄격(정확)한 버전 / 값이 Number 형태이고 NaN이면 true, 아니면 false
- !isNaN() : 주어진 값이 NaN이 아니면 true, 맞으면 false

# 참고
1) isNaN() : https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/isNaN
2) Number.isNaN() : https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Number/isNaN

# 예시(비교)
console.log(isNaN(0))  // false
console.log(isNaN(123))  // false
console.log(isNaN(-123))  // false
console.log(isNaN(123 + '테스트'))  // true
console.log(isNaN('테스트'))  // true
console.log(isNaN(true))  // false
console.log(isNaN(false))  // false
console.log(isNaN(""))  // false
console.log(isNaN(null))  // false
console.log(isNaN(undefined))  // true
console.log(isNaN(NaN))  // true

console.log("----------------")

console.log(Number.isNaN(0))  // false
console.log(Number.isNaN(123))  // false
console.log(Number.isNaN(-123))  // false
console.log(Number.isNaN(123 + '테스트'))  // false
console.log(Number.isNaN('테스트'))  // false
console.log(Number.isNaN(true))  // false
console.log(Number.isNaN(false))  // false
console.log(Number.isNaN(""))  // false
console.log(Number.isNaN(null))  // false
console.log(Number.isNaN(undefined))  // false
console.log(Number.isNaN(NaN))  // true

console.log("----------------")

console.log(!isNaN(0))  // true
console.log(!isNaN(123))  // true
console.log(!isNaN(-123))  // true
console.log(!isNaN(123 + '테스트'))  // false
console.log(!isNaN('테스트'))  // false
console.log(!isNaN(true))  // true
console.log(!isNaN(false))  // true
console.log(!isNaN(""))  // true
console.log(!isNaN(null))  // true
console.log(!isNaN(undefined))  // false
console.log(!isNaN(NaN))  // false