[코딩 테스트 RUN] 코딩 기초 트레이닝 9일차

코테런/코딩 기초 트레이닝(완주)
2026.02.14

⚠️ 주의!
프로그래머스에서 낸 코딩 문제에 대한 해답이 들어있습니다.
열람 시 주의해주세요.

 

이어서 진행되는 코테런! 연휴가 시작되어도 계속 해나가려고 한다.

 

배열 만들기 5

문자열 배열 intStrs와 정수 k, s, l가 주어집니다. intStrs의 원소는 숫자로 이루어져 있습니다.

배열 intStrs의 각 원소마다 s번 인덱스에서 시작하는 길이 l짜리 부분 문자열을 잘라내 정수로 변환합니다. 이때 변환한 정수값이 k보다 큰 값들을 담은 배열을 return 하는 solution 함수를 완성해 주세요.

 

 

 

문제 해설

배열과 substring을 통한 문자 자르기. s부터 길이 l이라고 했으니 s에서 시작해서 s + l까지를 자르면 된다.

arr의 길이가 정확하지 않으므로 ArrayList를 쓰는 편이 낫다.

이번에는 정석에 가까운 정답을 썼다.

 

정답

import java.util.ArrayList;

class Solution {
    public int[] solution(String[] intStrs, int k, int s, int l) {
        ArrayList<Integer> list = new ArrayList<>();
        int[] answer = {};
        int intStr;
        
        for(String str : intStrs) {        
            intStr = Integer.parseInt(str.substring(s, (s + l)));
            if(intStr > k) {
                list.add(intStr);
            }
         }
        
        if(list.size() > 0) {
            answer = new int[list.size()];
            for(int i = 0; i < list.size(); i++) {
                  answer[i] = list.get(i);
            }
        }
        
        return answer;
    }
}

 

 

부분 문자열 이어 붙여 문자열 만들기

길이가 같은 문자열 배열 my_strings와 이차원 정수 배열 parts가 매개변수로 주어집니다. parts[i]는 [s, e] 형태로, my_string[i]의 인덱스 s부터 인덱스 e까지의 부분 문자열을 의미합니다. 각 my_strings의 원소의 parts에 해당하는 부분 문자열을 순서대로 이어 붙인 문자열을 return 하는 solution 함수를 작성해 주세요.

 

문제 해설

String의 길이를 잘라서 배열로 순환한 다음에, 그 index가 parts index와 맞으면 된다. s는 0번이고, e는 1번인 고정형태이므로 [0] [1] 처럼 쓴다. 그렇게 한 뒤 substring으로 s와 e만큼을 자르면 되는데, 중요한 것은 substring에서 길이를 자를 때 e까지 자르고 싶다면 e + 1 처리를 해줘야 한다는 것이다(endIndex는 불포함시키므로).

 

 

정답

class Solution {
    public String solution(String[] my_strings, int[][] parts) {
        String answer = "";
        
        for(int i = 0; i < my_strings.length; i++){
            int s = parts[i][0];
            int e = parts[i][1];
            
            answer += my_strings[i].substring(s,e+1);
        }
        
        return answer;
    }
}

 

 

 

문자열의 뒤의 n글자

문자열 my_string과 정수 n이 매개변수로 주어질 때, my_string의 뒤의 n글자로 이루어진 문자열을 return 하는 solution 함수를 작성해 주세요.

 

문제 해설

String의 길이에서 n만큼을 뺀 값을 시작하여 끝까지 반환하면 된다.

 

 

정답

class Solution {
    public String solution(String my_string, int n) {
        String answer = "";
        int strLength = my_string.length();
        
        answer = my_string.substring(strLength - n);
        
        return answer;
    }
}

 

 

 

 

접미사 배열

어떤 문자열에 대해서 접미사는 특정 인덱스부터 시작하는 문자열을 의미합니다. 예를 들어, "banana"의 모든 접미사는 "banana", "anana", "nana", "ana", "na", "a"입니다.
문자열 my_string이 매개변수로 주어질 때, my_string의 모든 접미사를 사전순으로 정렬한 문자열 배열을 return 하는 solution 함수를 작성해 주세요.

 

문제 해설

my_string을 0부터 my_string.length()까지 자른 배열을 만들 수 있느냐는 문제이다. 사전순 배열은 Arrays.sort를 사용하여 정렬하면 된다.

 

정답

import java.util.ArrayList;
import java.util.Arrays;

class Solution {
    public String[] solution(String my_string) {
        String[] answer = {};
        ArrayList<String> list = new ArrayList<>();
        
        for(int i = 0; i < my_string.length(); i++){
            String str = my_string.substring(i);
            list.add(str);
        }
        
        answer = new String[list.size()];
        
        for(int i = 0; i < list.size(); i++){
            answer[i] = list.get(i);
        }
               
        Arrays.sort(answer);
        
        
        return answer;
    }
}

 

 

다만 위 코드의 경우 answer의 배열 길이를 my_string.length()로 처리하면 될 것을 ArrayList로 빙둘러서 사용했다.

제일 적절한 코드는 아래와 같다.

 

import java.util.Arrays;

class Solution {
    public String[] solution(String my_string) {
        String[] answer = {};
        answer = new String[my_string.length()];
        
        for(int i = 0; i < my_string.length(); i++){
            String str = my_string.substring(i);
            answer[i] = str;
        }
                   
        Arrays.sort(answer);
                
        return answer;
    }
}

 

 

접미사인지 확인하기

어떤 문자열에 대해서 접미사는 특정 인덱스부터 시작하는 문자열을 의미합니다. 예를 들어, "banana"의 모든 접미사는 "banana", "anana", "nana", "ana", "na", "a"입니다.
문자열 my_string과 is_suffix가 주어질 때, is_suffix가 my_string의 접미사라면 1을, 아니면 0을 return 하는 solution 함수를 작성해 주세요.

 

문제 해설

주어진 is_suffix가 String에 포함되느냐를 묻는 것이다.

내가 푼 케이스로는 my_string을 순환하며 substring하여 equals로 일치하는지 확인하여, 맞을 경우 answer을 1로 하고 break 처리했다.

 

정답

class Solution {
    public int solution(String my_string, String is_suffix) {
        int answer = 0;
        
        for(int i = 0; i < my_string.length(); i++){
            String str = my_string.substring(i);
            if(str.equals(is_suffix)) {
                answer = 1;
                break;
            }
        }
        
        return answer;
    }
}

 

 

가장 축약하여 사용된, 좋아요를 받은 정답은 다음과 같다.

class Solution {
    public int solution(String my_string, String is_suffix) {
        if(my_string.endsWith(is_suffix)) {
            return 1;
        } else {
            return 0;
        }
    }
}

 

String.endsWidth(str)

이것은 String이 str의 문자열로 끝나는지 확인하는 메서드다. true or false로 반환한다.