⛵ 항해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