728x90
반응형
문제 설명
임의의 문자열이 주어졌을 때 문자 "a", "b", "c"를 구분자로 사용해 문자열을 나누고자 합니다.예를 들어 주어진 문자열이 "baconlettucetomato"라면 나눠진 문자열 목록은 ["onlettu", "etom", "to"] 가 됩니다.문자열 myStr이 주어졌을 때 위 예시와 같이 "a", "b", "c"를 사용해 나눠진 문자열을 순서대로 저장한 배열을 return 하는 solution 함수를 완성해 주세요.단, 두 구분자 사이에 다른 문자가 없을 경우에는 아무것도 저장하지 않으며, return할 배열이 빈 배열이라면 ["EMPTY"]를 return 합니다.
제한사항
● 1 ≤ myStr의 길이 ≤ 1,000,000
○ myStr은 알파벳 소문자로 이루어진 문자열 입니다.
입출력 예
myStr result
"baconlettucetomato" ["onlettu", "etom", "to"]
"abcd" ["d"]
"cabab" ["EMPTY"]
입출력 설명
입출력 예 #1
문제 설명의 예시와 같습니다.
입출력 예 #2
"c" 이전에는 "a", "b", "c" 이외의 문자가 없습니다.
"c" 이후에 문자열 "d"가 있으므로 "d"를 저장합니다.
따라서 ["d"]를 return 합니다.
입출력 예 #3
"a", "b", "c" 이외의 문자가 존재하지 않습니다. 따라서 저장할 문자열이 없습니다.
따라서 ["EMPTY"]를 return 합니다.
내 풀이
Java
import java.util.*;
class Solution {
public String[] solution(String myStr) {
String[] answer = {};
myStr = myStr.replaceAll("[abc]"," ");
String[] arr = myStr.split(" ");
ArrayList<String> list = new ArrayList<>();
for(String s: arr){
if(!s.equals("")){
list.add(s);
}
}
if(list.isEmpty()) return new String[]{"EMPTY"};
answer = list.toArray(new String[list.size()]);
return answer;
}
}
C
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
// 파라미터로 주어지는 문자열은 const로 주어집니다. 변경하려면 문자열을 복사해서 사용하세요.
char** solution(const char* myStr) {
// return 값은 malloc 등 동적 할당을 사용해주세요. 할당 길이는 상황에 맞게 변경해주세요.
char** answer = (char**)malloc(sizeof(char*));
char* ptr = strtok(myStr, "abc");
int k = 0;
answer[0] = strdup("EMPTY");
while(ptr != NULL){
answer = realloc(answer,(k + 1) * sizeof(char*));
answer[k++] = strdup(ptr);
ptr = strtok(NULL, "abc");
}
return answer;
}
Python
import re
def solution(myStr):
answer = []
arr = re.sub('[abc]',' ', myStr).split(" ")
for s in arr:
if s != '':
answer.append(s)
if len(answer) == 0:
answer.append('EMPTY')
return answer
https://school.programmers.co.kr/learn/courses/30/lessons/181862
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
728x90
반응형
'코딩테스트 > 프로그래머스 기초' 카테고리의 다른 글
[코딩테스트 Lv.0] 문자열 바꿔서 찾기 (0) | 2025.02.08 |
---|---|
[코딩테스트 Lv.0] rny_string (0) | 2025.02.08 |
[코딩테스트 Lv.0] 배열의 원소만큼 추가하기 (0) | 2025.01.29 |
[코딩테스트 Lv.0] 빈 배열에 추가, 삭제하기 (0) | 2025.01.22 |
[코딩테스트 Lv.0] 배열 만들기 6 (0) | 2024.12.11 |