문제 설명
정수 배열 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
입출력 예
arr result
[1, 4, 2, 5, 3] [1, 2, 3]
입출력 설명
입출력 예 #1
각 작업을 마친 후에 배열의 변화를 나타내면 다음 표와 같습니다.
i arr[i] stk
0 1 []
1 4 [1]
2 2 [1, 4]
2 2 [1]
3 5 [1, 2]
4 3 [1, 2, 5]
4 3 [1, 2]
- - [1, 2, 3]
따라서 [1, 2, 3]을 return 합니다.
내 풀이
Java
import java.util.*;
class Solution {
public int[] solution(int[] arr) {
int[] stk = {};
List<Integer> list = new ArrayList<>();
int i = 0;
while(i < arr.length){
if(list.isEmpty()){
list.add(arr[i++]);
}else{
if(list.get(list.size() - 1) < arr[i]){
list.add(arr[i++]);
}else if(list.get(list.size() - 1) >= arr[i]){
list.remove(list.size() - 1);
}
}
}
stk = list.stream().mapToInt(Integer::intValue).toArray();
return stk;
}
}
C
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
// arr_len은 배열 arr의 길이입니다.
int* solution(int arr[], size_t arr_len) {
// return 값은 malloc 등 동적 할당을 사용해주세요. 할당 길이는 상황에 맞게 변경해주세요.
int* stk = (int*)malloc(sizeof(int) * arr_len);
int i = 0;
int k = 0;
while(i < arr_len){
if(stk == NULL){
stk[k++] = arr[i++];
}else{
if(stk[k - 1] < arr[i]){
stk[k++] = arr[i++];
}else if(stk[k - 1] >= arr[i]){
stk[k--] = '\0';
}
}
}
return stk;
}
Python
def solution(arr):
stk = []
i = 0
while i < len(arr):
if len(stk) <= 0:
stk.append(arr[i])
i += 1
else:
if stk[len(stk) - 1] < arr[i]:
stk.append(arr[i])
i += 1
elif stk[len(stk) - 1] >= arr[i]:
del stk[len(stk) - 1]
return stk
https://school.programmers.co.kr/learn/courses/30/lessons/181918
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
[코딩테스트 Lv.0] 배열 만들기 1
문제 설명정수 n과 k가 주어졌을 때, 1 이상 n이하의 정수 중에서 k의 배수를 오름차순으로 저장한 배열을 return 하는 solution 함수를 완성해 주세요.제한사항1 ≤ n ≤ 1,000,0001 ≤ k ≤
bluedayj.tistory.com
[코딩테스트 Lv.0] 배열 만들기 3
문제 설명정수 배열 arr와 2개의 구간이 담긴 배열 intervals가 주어집니다.intervals는 항상 [[a1, b1], [a2, b2]]의 꼴로 주어지며 각 구간은 닫힌 구간입니다. 닫힌 구간은 양 끝값과 그
bluedayj.tistory.com
[코딩테스트 Lv.0] 배열 만들기 5
문제 설명문자열 배열 intStrs와 정수 k, s, l가 주어집니다. intStrs의 원소는 숫자로 이루어져 있습니다.배열 intStrs의 각 원소마다 s번 인덱스에서 시작하는 길이 l짜리 부분 문자열
bluedayj.tistory.com
[코딩테스트 Lv.0] 배열 만들기 6
문제 설명0과 1로만 이루어진 정수 배열 arr가 주어집니다. arr를 이용해 새로운 배열 stk을 만드려고 합니다.i의 초기값을 0으로 설정하고 i가 arr의 길이보다 작으면 다음을 반복합
bluedayj.tistory.com
'코딩테스트 > 프로그래머스 기초' 카테고리의 다른 글
[코딩테스트 Lv.0] 카운트 업 (4) | 2025.03.27 |
---|---|
[코딩테스트 Lv.0] 콜라츠 수열 만들기 (6) | 2025.03.26 |
[코딩테스트 Lv.0] 간단한 논리 연산 (3) | 2025.03.24 |
[코딩테스트 Lv.0] 주사위 게임 3 (5) | 2025.03.24 |
[코딩테스트 Lv.0] 글자 이어 붙여 문자열 만들기 (3) | 2025.03.23 |