수열과 구간 쿼리 4
문제
정수 배열 arr
와 2차원 정수 배열 queries
이 주어집니다. queries
의 원소는 각각 하나의 query
를 나타내며, [s, e, k]
꼴입니다.
각 query
마다 순서대로 s
≤ i
≤ e
인 모든 i에 대해 i
가 k
의 배수이면 arr[i]
에 1을 더합니다.
위 규칙에 따라 queries
를 처리한 이후의 arr
를 return 하는 solution 함수를 완성해 주세요.
- 제한사항
- 1 ≤
arr
의 길이 ≤ 1,000- 0 ≤
arr
의 원소 ≤ 1,000,000
- 0 ≤
- 1 ≤
queries
의 길이 ≤ 1,000- 0 ≤
s
≤e
<arr
의 길이 - 0 ≤
k
≤ 5
- 0 ≤
- 1 ≤
소스 코드
const solution = arr => {
let stk = [];
for (let i = 0; i < arr.length; i++) {
if (stk.length === 0) {
stk.push(arr[i]);
} else if (stk[stk.length - 1] < arr[i]) {
stk.push(arr[i]);
} else if (stk[stk.length - 1] >= arr[i]) {
stk.pop();
i--;
}
}
return stk;
};
배열 만들기 2
문제
정수 l
과 r
이 주어졌을 때, l
이상 r
이하의 정수 중에서 숫자 "0"과 "5"로만 이루어진 모든 정수를 오름차순으로 저장한 배열을 return 하는 solution 함수를 완성해 주세요.
만약 그러한 정수가 없다면, -1이 담긴 배열을 return 합니다.
- 제한사항
- 1 ≤
l
≤r
≤ 1,000,000
- 1 ≤
소스 코드
const solution = (l, r) => {
let answer = [];
for (let i = l; i <= r; i++) {
let arr = String(i);
if (![...arr].every(x => x === '5' || x === '0')) continue;
answer.push(i);
}
return answer.length ? answer : [-1];
};
카운트 업
문제
정수 start_num
와 end_num
가 주어질 때, start_num
부터 end_num
까지의 숫자를 차례로 담은 리스트를 return하도록 solution 함수를 완성해주세요.
- 제한사항
- 0 ≤
start_num
≤end_num
≤ 50
- 0 ≤
소스 코드
const solution = (start_num, end_num) => {
let result = [];
for (let i = start_num; i <= end_num; i++) {
result.push(i);
}
return result;
};
콜라츠 수열 만들기
문제
모든 자연수 x
에 대해서 현재 값이 x
이면 x
가 짝수일 때는 2로 나누고, x
가 홀수일 때는 3 * x
+ 1로 바꾸는 계산을 계속해서 반복하면 언젠가는 반드시 x
가 1이 되는지 묻는 문제를 콜라츠 문제라고 부릅니다.
그리고 위 과정에서 거쳐간 모든 수를 기록한 수열을 콜라츠 수열이라고 부릅니다.
계산 결과 1,000 보다 작거나 같은 수에 대해서는 전부 언젠가 1에 도달한다는 것이 알려져 있습니다.
임의의 1,000 보다 작거나 같은 양의 정수 n
이 주어질 때 초기값이 n
인 콜라츠 수열을 return 하는 solution 함수를 완성해 주세요.
- 제한사항
- 1 ≤
n
≤ 1,000
- 1 ≤
소스 코드
const solution = n => {
let answer = [];
while (n !== 1) {
answer.push(n);
n = n % 2 === 0 ? n / 2 : n * 3 + 1;
}
answer.push(1);
return answer;
};
배열 만들기 4
문제
정수 배열 arr
가 주어집니다. arr
를 이용해 새로운 배열 stk
를 만드려고 합니다.
변수 i
를 만들어 초기값을 0으로 설정한 후 i
가 arr
의 길이보다 작으면 다음 작업을 반복합니다.
만약 stk가 빈 배열이라면 arr[i]
를 stk에 추가하고 i
에 1을 더합니다.
stk
에 원소가 있고, stk
의 마지막 원소가 arr[i]
보다 작으면 arr[i]
를 stk
의 뒤에 추가하고 i
에 1을 더합니다.
stk
에 원소가 있는데 stk
의 마지막 원소가 arr[i]
보다 크거나 같으면 stk
의 마지막 원소를 stk
에서 제거합니다.
위 작업을 마친 후 만들어진 stk
를 return 하는 solution 함수를 완성해 주세요.
- 제한사항
- 1 ≤
arr
의 길이 ≤ 100,000- 1 ≤
arr
의 원소 ≤ 100,000
- 1 ≤
- 1 ≤
소스 코드
const solution = arr => {
let stk = [];
for (let i = 0; i < arr.length; i++) {
if (stk.length === 0) {
stk.push(arr[i]);
} else if (stk[stk.length - 1] < arr[i]) {
stk.push(arr[i]);
} else if (stk[stk.length - 1] >= arr[i]) {
stk.pop();
i--;
}
}
return stk;
};
Ghost