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

이어서 진행되는 코테런! 연휴가 시작되어도 계속 해나가려고 한다.
배열 만들기 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로 반환한다.
'코테런 > 코딩 기초 트레이닝(완주)' 카테고리의 다른 글
| [코딩 테스트 RUN] 코딩 기초 트레이닝 11일차: 리스트(배열) (0) | 2026.02.16 |
|---|---|
| [코딩 테스트 RUN] 코딩 기초 트레이닝 10일차: 문자열 (0) | 2026.02.15 |
| [코딩 테스트 RUN] 코딩 기초 트레이닝 8일차 (0) | 2026.02.13 |
| [코딩 테스트 RUN] 코딩 기초 트레이닝 7일차 (0) | 2026.02.12 |
| [코딩 테스트 RUN] 코딩 기초 트레이닝 6일차 (0) | 2026.02.11 |
