728x90
1. 문자열 정수로 바꾸기
function solution(s) {
var answer = 0;
answer = +s;
return answer;
}
2. x만큼 간격있는 n개 숫자
function solution(x, n) {
var answer = [];
for (let i = 1; i <= n; i++) {
answer.push(x * i);
}
return answer;
}
3. 콜라츠 추측
function solution(num) {
var answer = 0;
while (num > 1) {
num = num % 2 ? num * 3 + 1 : num / 2;
answer++;
}
answer = answer >= 500 ? -1 : answer;
return answer;
}
4. 최댓값과 최솟값
(1) 첫번째 풀이
function solution(s) {
var answer = "";
const arr = s.split(" ").sort((a, b) => +a - +b);
answer = `${arr[0]} ${arr.at(-1)}`;
return answer;
}
(2) 다른사람 풀이 본 후
function solution(s) {
var answer = "";
const arr = s.split(" ");
answer = Math.min(...arr) + " " + Math.max(...arr);
return answer;
}
sort를 돌리는것 보다 내장함수인 Math method를 사용하는게 더 빠르다.
5. 두 정수 사이의 합
function solution(a, b) {
var answer = 0;
const arr = [a, b].sort((a, b) => a - b);
for (let i = arr[0]; i <= arr[1]; i++) {
answer += i;
}
return answer;
}
6. 서울에서 김서방 찾기
function solution(seoul) {
var answer = "";
answer = `김서방은 ${seoul.indexOf("Kim")}에 있다`;
return answer;
}
7. 핸드폰 번호 가리기
function solution(phone_number) {
var answer = "";
answer = phone_number.replace(/.(?=....)/g, "*");
return answer;
}
(1) (?=) : 긍정형 전방탐색
(2) (?!) : 부정형 전방탐색
(3) (?<=) : 긍정형 후방탐색
(4) (?<!) : 부정형 후방탐색
8. 제일 작은수 제거하기
(1) 첫번째 풀이
function solution(arr) {
var answer = [];
const temparr = [...arr];
arr.splice(arr.indexOf(temparr.sort((a, b) => a - b)[0]), 1);
answer = arr.length == 0 ? [-1] : arr;
return answer;
}
(2) 다른사람 풀이 본 후
function solution(arr) {
arr.splice(arr.indexOf(Math.min(...arr)), 1);
if (!arr.length) arr.push(-1);
return arr;
}
기본 내장함수인 Math의 method를 사용하는게 sort보다 훨씬 빠르다.
9. 나누어 떨어지는 숫자배열
(1) 첫번째 풀이
function solution(arr, divisor) {
var answer = [];
arr.forEach((el) => {
if (el % divisor == 0) {
answer.push(el);
}
});
if (!answer.length) answer.push(-1);
return answer.sort((a, b) => a - b);
}
(2) 다름사람 풀이 본 후
function solution(arr, divisor) {
var answer = [];
answer = arr.filter((el) => el % divisor == 0);
return answer.length == 0 ? [-1] : answer.sort((a, b) => a - b);
}
속도는 비슷 하지만 filter로 깔끔하게 풀수 있다
10. 이진 변환 반복하기
function solution(s) {
var answer = [];
let count = 0;
let removeZero = 0;
while (true) {
count++;
removeZero += s.split("0").length - 1;
s = s.split("0").join("").length.toString(2);
if (s == 1) break;
}
answer = [count, removeZero];
return answer;
}
11. 없는 숫자 더하기
function solution(numbers) {
var answer = 0;
for (let i = 1; i < 10; i++) {
if (numbers.indexOf(i) == -1) {
answer += i;
}
}
return answer;
}
12. 수박수박수박수박
(1) 첫번째 풀이
function solution(n) {
var answer = "";
for (let i = 0; i < Math.floor(n / 2); i++) {
answer += "수박";
}
if (n % 2 == 1) {
answer += "수";
}
return answer;
}
(2) 다름사람 풀이 본 후
function solution(n) {
var answer = "";
answer = n % 2 == 1 ? "수박".repeat(n / 2) + "수" : "수박".repeat(n / 2);
return answer;
}
13. 가운데 글자 가져오기
function solution(s) {
var answer = "";
const length = s.length;
answer =
length % 2 == 1
? s.charAt(length / 2)
: s.charAt(length / 2 - 1) + s.charAt(length / 2);
return answer;
}
728x90
'개발 > 알고리즘' 카테고리의 다른 글
[코딩테스트] 프로그래머스 문제 모음 (0) | 2022.09.20 |
---|---|
[프로그래머스 level2] Jaden Case문자열 만들기 (0) | 2022.09.14 |
[2022.09.12]프로그래머스 문제 모음 (0) | 2022.09.13 |
[프로그래머스 level 1 JS풀이] 내적 (0) | 2022.08.15 |
[프로그래머스 level 1 JS풀이] 숫자 문자열과 영단어 (0) | 2022.08.15 |