마지막 두 원소
문제
정수 리스트 num_list
가 주어질 때, 마지막 원소가 그전 원소보다 크면 마지막 원소에서 그전 원소를 뺀 값을 마지막 원소가 그전 원소보다 크지 않다면 마지막 원소를 두 배한 값을 추가하여 return하도록 solution 함수를 완성해주세요.
- 제한사항
- 2 ≤
num_list
의 길이 ≤ 10 - 1 ≤
num_list
의 원소 ≤ 9
- 2 ≤
소스 코드
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
let input = '';
rl.on('line', (line) => {
input = line.split(' ').map(Number);
rl.close();
}).on('close', () => {
const answer = solution(input);
console.log(answer);
});
const solution = num_list => {
let answer = num_list;
const len = num_list.length;
answer.push(num_list[len - 1] > num_list[len - 2] ? num_list[len - 1] - num_list[len - 2] : num_list[len - 1] * 2);
return answer;
};
수 조작하기 1
문제
정수 n
과 문자열 control
이 주어집니다. control은 "w", "a", "s", "d"의 4개의 문자로 이루어져 있으며, control
의 앞에서부터 순서대로 문자에 따라 n
의 값을 바꿉니다.
"w" : n
이 1 커집니다.
"s" : n
이 1 작아집니다.
"d" : n
이 10 커집니다.
"a" : n
이 10 작아집니다.
위 규칙에 따라 n
을 바꿨을 때 가장 마지막에 나오는 n
의 값을 return 하는 solution 함수를 완성해 주세요.
- 제한사항
- 100,000 ≤
n
≤ 100,000 - 1 ≤
control
의 길이 ≤ 100,000control
은 알파벳 소문자 "w", "a", "s", "d"로 이루어진 문자열입니다.
- 100,000 ≤
소스 코드
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
let number = 0;
let input = '';
let count = 0;
rl.on('line', (line) => {
if (count === 0) {
number = Number(line);
} else {
input = line;
}
count++;
if (count > 1) {
rl.close();
}
}).on('close', () => {
const answer = solution(number, input);
console.log(answer);
});
const solution = (n, control) => {
let answer = n;
const strArray = control.split('');
strArray.map(item => {
if (item === 'w') {
answer += 1;
} else if (item === 's') {
answer -= 1;
} else if (item === 'd') {
answer += 10;
} else if (item === 'a') {
answer -= 10;
}
});
return answer;
};
수 조작하기 2
문제
정수 배열 numLog
가 주어집니다. 처음에 numLog[0]
에서 부터 시작해 "w", "a", "s", "d"로 이루어진 문자열을 입력으로 받아 순서대로 다음과 같은 조작을 했다고 합시다.
"w" : 수에 1을 더한다.
"s" : 수에 1을 뺀다.
"d" : 수에 10을 더한다.
"a" : 수에 10을 뺀다.
그리고 매번 조작을 할 때마다 결괏값을 기록한 정수 배열이 numLog
입니다. 즉, numLog[i]
는 numLog[0]
로부터 총 i
번의 조작을 가한 결과가 저장되어 있습니다.
주어진 정수 배열 numLog
에 대해 조작을 위해 입력받은 문자열을 return 하는 solution 함수를 완성해 주세요.
- 제한사항
- 2 ≤
numLog
의 길이 ≤ 100,000- 100,000 ≤
numLog[0]
≤ 100,000 - 1 ≤
i
≤numLog
의 길이인 모든i
에 대해|numLog[i] - numLog[i - 1]|
의 값은 1 또는 10입니다.
- 100,000 ≤
- 2 ≤
소스 코드
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
let input = '';
rl.on('line', (line) => {
input = line.split(' ').map(Number);
rl.close();
}).on('close', () => {
const answer = solution(input);
console.log(answer);
});
const solution = (numLog) => {
let answer = '';
for (let i = 1; i < numLog.length; i++) {
const currNum = numLog[i];
const prevNum = numLog[i - 1];
if (currNum - prevNum === 1) {
answer += 'w';
} else if (currNum - prevNum === -1) {
answer += 's';
} else if (currNum - prevNum === 10) {
answer += 'd';
} else if (currNum - prevNum === -10) {
answer += 'a';
}
}
return answer;
};
수열과 구간 쿼리 3
문제
정수 배열 arr
와 2차원 정수 배열 queries
이 주어집니다. queries
의 원소는 각각 하나의 query
를 나타내며, [i, j]
꼴입니다.
각 query
마다 순서대로 arr[i]
의 값과 arr[j]
의 값을 서로 바꿉니다.
위 규칙에 따라 queries
를 처리한 이후의 arr
를 return 하는 solution 함수를 완성해 주세요.
- 제한사항
- 1 ≤
arr
의 길이 ≤ 1,000- 0 ≤
arr
의 원소 ≤ 1,000,000
- 0 ≤
- 1 ≤
queries
의 길이 ≤ 1,000- 0 ≤
i
<j
<arr
의 길이
- 0 ≤
- 1 ≤
소스 코드
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
let input = '';
let queries = '';
let count = 0;
rl.on('line', (line) => {
if (count === 0) {
input = line.split(' ').map(Number);
} else {
queries = line.split(' ');
queries = queries.map(item => {
return item.split('');
});
}
count++;
if (count > 1) {
rl.close();
}
}).on('close', () => {
const answer = solution(input, queries);
console.log(answer);
});
const solution = (arr, queries) => {
queries.map(item => {
let temp;
temp = arr[Number(item[0])];
arr[Number(item[0])] = arr[Number(item[1])];
arr[Number(item[1])] = temp;
});
return arr;
};
수열과 구간 쿼리 2
문제
정수 배열 arr
와 2차원 정수 배열 queries
이 주어집니다. queries
의 원소는 각각 하나의 query
를 나타내며, [s, e, k]
꼴입니다.
각 query
마다 순서대로 s
≤ i
≤ e
인 모든 i
에 대해 k
보다 크면서 가장 작은 arr[i]
를 찾습니다.
각 쿼리의 순서에 맞게 답을 저장한 배열을 반환하는 solution 함수를 완성해 주세요. 단, 특정 쿼리의 답이 존재하지 않으면 -1을 저장합니다.
- 제한사항
- 1 ≤
arr
의 길이 ≤ 1,000- 0 ≤
arr
의 원소 ≤ 1,000,000
- 0 ≤
- 1 ≤
queries
의 길이 ≤ 1,000- 0 ≤
s
≤e
<arr
의 길이 - 0 ≤
k
≤ 1,000,000
- 0 ≤
- 1 ≤
소스 코드
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
let input = '';
let queries = '';
let count = 0;
rl.on('line', (line) => {
if (count === 0) {
input = line.split(' ').map(Number);
} else {
queries = line.split(' ');
queries = queries.map(item => {
return item.split('').map(Number);
});
}
count++;
if (count > 1) {
rl.close();
}
}).on('close', () => {
const answer = solution(input, queries);
console.log(answer);
});
const solution = (arr, queries) => {
let answer = [];
for (let i = 0; i < queries.length; i++) {
const item = queries[i];
const temp = arr.slice(item[0], item[1] + 1);
answer.push((temp.filter(num => item[2] < num)).sort((a, b) => a - b)[0] || -1);
}
return answer;
};
Ghost