문제 설명
정수 리스트 num_list가 주어질 때, 마지막 원소가 그전 원소보다 크면 마지막 원소에서 그전 원소를 뺀 값을 마지막 원소가 그전 원소보다 크지 않다면 마지막 원소를 두 배한 값을 추가하여 return하도록 solution 함수를 완성해주세요.
제한사항
- 2 ≤ num_list의 길이 ≤ 10
- 1 ≤ num_list의 원소 ≤ 9
입출력 예
num_list | result |
[2, 1, 6] | [2, 1, 6, 5] |
[5, 2, 1, 7, 5] | [5, 2, 1, 7, 5, 10] |
입출력 예 설명
입출력 예 #1
- 마지막 원소인 6이 그전 원소인 1보다 크기 때문에 6 - 1인 5를 추가해 return합니다.
입출력 예 #2
- 마지막 원소인 5가 그전 원소인 7보다 크지 않기 때문에 5의 두 배인 10을 추가해 return합니다.
class Solution {
public int[] solution(int[] num_list) {
int[] answer = {};
// 마지막 두 요소를 비교하여 조건에 맞는 값을 계산한다.
if (num_list[num_list.length - 1] > num_list[num_list.length - 2]) {
// 새로운 배열을 생성하고 기존 배열을 복사
answer = new int[num_list.length + 1];
System.arraycopy(num_list, 0, answer, 0, num_list.length); // 기존 배열 복사
answer[num_list.length] = num_list[num_list.length - 1] - num_list[num_list.length - 2]; // 계산된 값을 추가
}
else {
// 새로운 배열을 생성하고 기존 배열을 복사
answer = new int[num_list.length + 1];
System.arraycopy(num_list, 0, answer, 0, num_list.length); // 기존 배열 복사
answer[num_list.length] = num_list[num_list.length - 1] * 2; // 계산된 값을 추가
}
return answer;
}
}
문제 설명
정수 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,000
- control은 알파벳 소문자 "w", "a", "s", "d"로 이루어진 문자열입니다.
입출력 예
n | control | result |
0 | "wsdawsdassw" | -1 |
입출력 예 설명
입출력 예 #1
- 수 n은 control에 따라 다음과 같은 순서로 변하게 됩니다.
- 0 → 1 → 0 → 10 → 0 → 1 → 0 → 10 → 0 → -1 → -2 → -1
- 따라서 -1을 return 합니다.
class Solution {
public int solution(int n, String control) {
int answer = 0;
for(int i=0; i<control.length(); i++){
if(control.charAt(i) == 'w'){
n += 1;
}
else if(control.charAt(i) == 's') {
n -= 1;
}
else if(control.charAt(i) == 'd') {
n += 10;
}
else if(control.charAt(i) == 'a') {
n -= 10;
}
}
answer = n;
return answer;
}
}
문제 설명
정수 배열 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입니다.
입출력 예
numLog | result |
[0, 1, 0, 10, 0, 1, 0, 10, 0, -1, -2, -1] | "wsdawsdassw" |
입출력 예 설명
입출력 예 #1
- result인 "wsdawsdassw"를 따라 numLog[0]에서부터 시작해 조작을 하면 numLog의 값과 순서대로 일치합니다. 따라서 "wsdawsdassw"를 return 합니다.
class Solution {
public String solution(int[] numLog) {
StringBuilder answer = new StringBuilder();
for (int i = 1; i < numLog.length; i++) {
int pivot = numLog[i] - numLog[i - 1]; // 현재 값과 이전 값의 차이
if (pivot == 1) {
answer.append("w");
} else if (pivot == -1) {
answer.append("s");
} else if (pivot == 10) {
answer.append("d");
} else if (pivot == -10) {
answer.append("a");
}
}
return answer.toString();
}
}
문제 설명
정수 배열 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
- 1 ≤ queries의 길이 ≤ 1,000
- 0 ≤ i < j < arr의 길이
입출력 예
arr | queries | result |
[0, 1, 2, 3, 4] | [[0, 3], [1, 2], [1, 4]] | [3, 4, 1, 0, 2] |
입출력 예 설명
입출력 예 #1
- 각 쿼리에 따라 arr가 다음과 같이 변합니다.
arr |
[0, 1, 2, 3, 4] |
[3, 1, 2, 0, 4] |
[3, 2, 1, 0, 4] |
[3, 4, 1, 0, 2] |
- 따라서 [3, 4, 1, 0, 2]를 return 합니다.
class Solution {
public int[] solution(int[] arr, int[][] queries) {
// queries 배열을 순회하며 각각의 쿼리에서 두 값을 교환
for (int[] query : queries) {
int i = query[0];
int j = query[1];
// arr[i]와 arr[j] 값을 교환
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
return arr;
}
}
문제 설명
정수 배열 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
- 1 ≤ queries의 길이 ≤ 1,000
- 0 ≤ s ≤ e < arr의 길이
- 0 ≤ k ≤ 1,000,000
입출력 예
arr | queries | result |
[0, 1, 2, 4, 3] | [[0, 4, 2], [0 3, 2], [0, 2, 2]] | [3, 4, -1] |
입출력 예 설명
입출력 예 #1
- 첫 번째 쿼리의 범위에는 0, 1, 2, 4, 3이 있으며 이 중 2보다 크면서 가장 작은 값은 3입니다.
- 두 번째 쿼리의 범위에는 0, 1, 2, 4가 있으며 이 중 2보다 크면서 가장 작은 값은 4입니다.
- 세 번째 쿼리의 범위에는 0, 1, 2가 있으며 여기에는 2보다 큰 값이 없습니다.
- 따라서 [3, 4, -1]을 return 합니다.
class Solution {
public int[] solution(int[] arr, int[][] queries) {
int[] answer = new int[queries.length];
for (int q = 0; q < queries.length; q++) {
int s = queries[q][0];
int e = queries[q][1];
int k = queries[q][2];
int result = -1; // 기본값은 -1로 설정 (찾지 못할 경우)
// s부터 e까지의 범위에서 k보다 큰 값 중 가장 작은 값
for (int i = s; i <= e; i++) {
if (arr[i] > k) {
if (result == -1 || arr[i] < result) {
result = arr[i]; // 현재 값이 더 작으면 갱신
}
}
}
answer[q] = result; // 결과에 답을 저장
}
return answer;
}
}
'기타 > study' 카테고리의 다른 글
코딩 기초 트레이닝 - 프로그래머스(차근차근 시작해 보세요 Day 8) (0) | 2025.01.02 |
---|---|
코딩 기초 트레이닝 - 프로그래머스(차근차근 시작해 보세요 Day 7) (0) | 2024.12.31 |
코딩 기초 트레이닝 - 프로그래머스(차근차근 시작해 보세요 Day 5) (0) | 2024.12.27 |
코딩 기초 트레이닝 - 프로그래머스(차근차근 시작해 보세요 Day 4) (0) | 2024.12.26 |
코딩 기초 트레이닝 - 프로그래머스(차근차근 시작해 보세요 Day 3) (0) | 2024.12.25 |