SMALL
1. 배열 만들기 6
function solution(arr) {
var stk = [];
stk.push(arr[0]);
for (let i=1; i<arr.length; i++) {
if (stk[stk.length-1] == arr[i]) {
stk.pop();
} else { // (stk[stk.length-1] != arr[i])
stk.push(arr[i]);
}
}
if (stk.length == 0) {
stk.push(-1);
}
return stk;
}
2. 무작위로 k개의 수 뽑기
function solution(arr, k) {
var answer = [];
let temp = [];
// 중복 값 없앤 배열
arr.forEach( i => {
if (!temp.includes(i)) {
temp.push(i);
}
})
for (let v=0; v<k; v++) {
if (temp[v] == null) {
answer.push(-1)
} else {
answer.push(temp[v]);
}
}
return answer;
}
3. 배열의 길이를 2의 거듭제곱으로 만들기
// 다른 사람들 풀이를 보니, Math.log2()를 사용한 풀이 多
function solution(arr) {
var answer = [];
let length = 1;
while (true) {
if (length < arr.length) {
length = length*2;
} else {
break;
}
}
for (let i=0; i<length; i++) {
if (arr[i] == null) {
answer.push(0);
} else {
answer.push(arr[i]);
}
}
return answer;
}
4. 배열 비교하기
function solution(arr1, arr2) {
var answer = 0;
let arr1Sum = 0;
let arr2Sum = 0;
// 합 계산
arr1.forEach( i => {
arr1Sum += i;
})
arr2.forEach( j => {
arr2Sum += j;
})
// 조건식
if (arr1.length > arr2.length) {
answer = 1;
} else if (arr1.length < arr2.length) {
answer = -1;
} else { // arr1.length == arr2.length
if (arr1Sum > arr2Sum) {
answer = 1;
} else if (arr1Sum < arr2Sum) {
answer = -1;
} else { // arr1Sum == arr2Sum
answer = 0;
}
}
return answer;
}
5. 배열의 길이에 따라 다른 연산하기
function solution(arr, n) {
var answer = [];
if (arr.length%2==1) { // 홀수
arr.forEach( (v,i) => {
if (i%2==0) {
v += n;
}
answer.push(v);
})
} else { // 짝수
arr.forEach( (v,i) => {
if (i%2==1) {
v += n;
}
answer.push(v);
})
}
return answer;
}
6. 뒤에서 5등까지
function solution(num_list) {
var answer = [];
// 그냥 sort()로 정렬 시, 문자열 정렬
// **숫자를 기준으로 정렬
num_list.sort( (a,b) => a - b );
answer = num_list.slice(0, 5);
return answer;
}
7. 문자열 묶기
// dictionary {key: value} 사용
// key: 문자열 길이, value: 문자열 목록
function solution(strArr) {
var answer = 0;
let res = {} // 딕셔너리 객체
strArr.forEach( i => {
const length = i.length;
// ** 널 병합 연산자 (??)
// 왼쪽 피연산자가 null/undefined일 때 오른쪽 피연산자를 반환
// 그렇지 않으면 왼쪽 피연산자를 반환
res[length] = res[length] ?? []
// 이전 i가 담긴 딕셔너리가 있으면, 그 곳에 i를 담는다.
// 현재 i가 처음 나온 값이면, 빈 딕셔너리에 담는다.
res[length].push(i);
})
// 각 res 값에 대해 길이 구하기
const values = Object.values(res).map(a => a.length);
// 같은 값이 가장 많은
answer = Math.max(...values);
return answer;
}
728x90
'Algorithm > Javascript' 카테고리의 다른 글
[프로그래머스] 230729 코딩테스트 연습 (0) | 2023.07.29 |
---|---|
[프로그래머스] 230728 코딩테스트 연습 (0) | 2023.07.28 |
[프로그래머스] 230726 코딩테스트 연습 (0) | 2023.07.26 |
[프로그래머스] 230725 코딩테스트 연습 (0) | 2023.07.25 |
[프로그래머스] 230724 코딩테스트 연습 (0) | 2023.07.24 |
댓글