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

거의 끝나간다.
요즘은 SWEA 문제도 풀고 있어서 병행해서 풀듯 싶다.
부분 문자열
어떤 문자열 A가 다른 문자열 B안에 속하면 A를 B의 부분 문자열이라고 합니다. 예를 들어 문자열 "abc"는 문자열 "aabcc"의 부분 문자열입니다.
문자열 str1과 str2가 주어질 때, str1이 str2의 부분 문자열이라면 1을 부분 문자열이 아니라면 0을 return하도록 solution 함수를 완성해주세요.
문제 해설
contains와 삼항연산 사용.
정답
class Solution {
public int solution(String str1, String str2) {
return str2.contains(str1) ? 1 : 0;
}
}
꼬리 문자열
문자열들이 담긴 리스트가 주어졌을 때, 모든 문자열들을 순서대로 합친 문자열을 꼬리 문자열이라고 합니다. 꼬리 문자열을 만들 때 특정 문자열을 포함한 문자열은 제외시키려고 합니다. 예를 들어 문자열 리스트 ["abc", "def", "ghi"]가 있고 문자열 "ef"를 포함한 문자열은 제외하고 꼬리 문자열을 만들면 "abcghi"가 됩니다.
문자열 리스트 str_list와 제외하려는 문자열 ex가 주어질 때, str_list에서 ex를 포함한 문자열을 제외하고 만든 꼬리 문자열을 return하도록 solution 함수를 완성해주세요.
문제 해설
그냥 배열에 contains한다.
연산적으로 StringBuilder 사용을 하는 쪽이 좋다.
정답
class Solution {
public String solution(String[] str_list, String ex) {
StringBuilder sb = new StringBuilder();
for(String str : str_list){
if(!str.contains(ex)){
sb.append(str);
}
}
return sb.toString();
}
}
정수 찾기
정수 리스트 num_list와 찾으려는 정수 n이 주어질 때, num_list안에 n이 있으면 1을 없으면 0을 return하도록 solution 함수를 완성해주세요.
문제 해설
num_list를 순회돌면서 있는지 찾으면 된다.
있으면 바로 return 1을 처리, 없으면 전체 순회를 시킨다.
정답
class Solution {
public int solution(int[] num_list, int n) {
for(int num : num_list) {
if(num == n)
return 1;
}
return 0;
}
}
주사위 게임 1
1부터 6까지 숫자가 적힌 주사위가 두 개 있습니다. 두 주사위를 굴렸을 때 나온 숫자를 각각 a, b라고 했을 때 얻는 점수는 다음과 같습니다.
a와 b가 모두 홀수라면 a2 + b2 점을 얻습니다.
a와 b 중 하나만 홀수라면 2 × (a + b) 점을 얻습니다.
a와 b 모두 홀수가 아니라면 |a - b| 점을 얻습니다.
두 정수 a와 b가 매개변수로 주어질 때, 얻는 점수를 return 하는 solution 함수를 작성해 주세요.
문제 해설
그냥 홀수 짝수 여부만 알고 연산하면 되지만
…
나처럼 연산한 사람이 그다지 없다는 걸 깨닫고 조금 신기했다.
하나만 홀수일 경우 더하면 홀수가 된다. 그러므로 이 경우를 먼저 if로 처리한다. (a + b) % 2 == 1이라면 홀수이므로 연산하면 되고, 그 외의 경우는 짝수이거나 홀수인 조합이므로 한쪽만 홀수인지 확인하여 연산하면 된다.
정답
class Solution {
public int solution(int a, int b) {
int answer = 0;
if((a + b) % 2 == 1) {
answer = 2 * (a + b);
} else {
if(a % 2 == 0) {
answer = Math.max(a, b) - Math.min(a, b);
} else {
answer = a * a + b * b;
}
}
return answer;
}
}
정답 중에 삼항연산으로 한 정답도 있었는데 좀 웃겼다…
Math.abs가 있으면 조금 더 나았을 것이다.
Math.abs
인자값에 대한 절대값을 반환하는 함수, 즉 |a - b|를 반환해주는 함수이다.
날짜 비교하기
정수 배열 date1과 date2가 주어집니다. 두 배열은 각각 날짜를 나타내며 [year, month, day] 꼴로 주어집니다. 각 배열에서 year는 연도를, month는 월을, day는 날짜를 나타냅니다.
만약 date1이 date2보다 앞서는 날짜라면 1을, 아니면 0을 return 하는 solution 함수를 완성해 주세요.
문제 해설
한 번 틀렸다..
class Solution {
public int solution(int[] date1, int[] date2) {
for(int i = 0; i < date1.length; i++){
if(date1[i] < date2[i]) {
return 1;
}
}
return 0;
}
}
오답은 바로 이것인데, 문제가 date1[i] > date2[i] 처리를 제대로 안했기 때문이다.
date1[i] > date2[i] 이면 바로 return 0을 해야한다.
정답
class Solution {
public int solution(int[] date1, int[] date2) {
for(int i = 0; i < date1.length; i++){
if(date1[i] < date2[i]) {
return 1;
}
if(date1[i] > date2[i]) {
return 0;
}
}
return 0;
}
}
'코테런 > 코딩 기초 트레이닝(완주)' 카테고리의 다른 글
| [코딩 테스트 RUN] 코딩 기초 트레이닝 25일차: 완주 (0) | 2026.03.02 |
|---|---|
| [코딩 테스트 RUN] 코딩 기초 트레이닝 24일차: 조건문 활용 (0) | 2026.03.01 |
| [코딩 테스트 RUN] 코딩 기초 트레이닝 22일차: 함수(메서드), 조건문 활용 (0) | 2026.02.27 |
| [코딩 테스트 RUN] 코딩 기초 트레이닝 21일차: 함수(메서드) (0) | 2026.02.26 |
| [코딩 테스트 RUN] 코딩 기초 트레이닝 20일차: 함수(메서드) (0) | 2026.02.25 |