728x90
1. 나머지 1되는 수 찾기
function solution(n) {
var answer = 0;
for (let i = 1; i < n; i++) {
if (n % i == 1) {
answer = i;
break;
}
}
return answer;
}
2. 짝수와 홀수
function solution(num) {
var answer = "";
answer = num % 2 ? "Odd" : "Even";
return answer;
}
3. 자릿수 더하기
function solution(n) {
var answer = 0;
const arr = String(n).split("");
return (answer = arr.reduce((acc, cur) => {
acc += Number(cur);
return acc;
}, 0));
}
4. 정수 제곱근 판별
(1) 1차 풀이
function solution(n) {
var answer = 0;
for (let i = 1; i <= n; i++) {
if (i ** 2 > n) {
break;
}
if (i ** 2 == n) {
answer = (i + 1) ** 2;
break;
}
answer = -1;
}
return answer;
}
(2) 다른사람 풀이를 본 후
function solution(n) {
var answer = 0;
const root = Math.sqrt(n);
if (root == Math.floor(root)) {
answer = (root + 1) ** 2;
} else {
answer = -1;
}
return answer;
}
다른사람들이 쓴 Math.sqrt를 참고했다. 내가 첫번째 푼 풀이는 for문을 돌려야 하므로 시간이 더 오래걸린다.
Math.sqrt를 사용해서 제곱근을 바로 찾아 실행하므로 시간소요가 더 적다.
5. 약수의 합
function solution(n) {
var answer = 0;
for (let i = 0; i <= n; i++) {
if (n % i == 0) {
answer += i;
}
}
return answer;
}
6. 평균 구하기
function solution(arr) {
var answer = 0;
const total = arr.reduce((acc, cur) => {
acc += cur;
return acc;
});
answer = total / arr.length;
return answer;
}
7. 자연수 뒤집어 배열 만들기
function solution(n) {
var answer = [];
answer = (n + "")
.split("")
.reverse()
.map((el) => parseInt(el));
return answer;
}
8. 정수 내림차순으로 배치
function solution(n) {
var answer = 0;
answer = parseInt(
(n + "")
.split("")
.map((el) => parseInt(el))
.sort((a, b) => b - a)
.join("")
);
return answer;
}
9. 문자열 내 p,y개수 찾기
(1) 첫번째 풀이
function solution(s) {
var answer = true;
if (s.match(/P/gi).length == s.match(/Y/gi).length) {
answer = true;
} else {
answer = false;
}
return answer;
}
실패 : 런타임에러 => match가 실행속도가 느린것 같다.
(2) 두번째 풀이
function solution(s) {
var answer = true;
const string = s.toUpperCase().split("");
let pvalue = 0;
let yvalue = 0;
string.forEach((el) => {
if (el == "P") {
pvalue++;
} else if (el == "Y") {
yvalue++;
}
});
if (pvalue !== yvalue) {
answer = false;
}
return answer;
}
(3) 다른사람 풀이 본 후
function solution(s) {
return s.toUpperCase().split("P").length == s.toUpperCase().split("Y").length;
}
split 한 배열의 length로 P, Y의 갯수를 알아 낼수 있다.
10. 하샤드수
function solution(x) {
return x % (x + "").split("").reduce((acc, cur) => +acc + +cur) == 0
? true
: false;
}
728x90
'개발 > 알고리즘' 카테고리의 다른 글
[프로그래머스 level2] Jaden Case문자열 만들기 (0) | 2022.09.14 |
---|---|
[2022.09.13] 프로그래머스 문제 모음 (0) | 2022.09.13 |
[프로그래머스 level 1 JS풀이] 내적 (0) | 2022.08.15 |
[프로그래머스 level 1 JS풀이] 숫자 문자열과 영단어 (0) | 2022.08.15 |
[프로그래머스 level 1 JS] 음양 더하기 (0) | 2022.08.15 |