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

DAY 3. 오늘도 열심히 달리는 코테런! 🏃 🏃 🏃
1. 문자열 섞기
길이가 같은 두 문자열 str1과 str2가 주어집니다.
두 문자열의 각 문자가 앞에서부터 서로 번갈아가면서 한 번씩 등장하는 문자열을 만들어 return 하는 solution 함수를 완성해 주세요.
문제 코드
class Solution {
public String solution(String str1, String str2) {
String answer = "";
return answer;
}
}
문제 해설
조건에서 가장 중요한 건 길이가 같다는 지점이다. 왜냐하면 같아야 성립되는 질문이기 때문이다.
for문을 사용해서 순회하여 각 String의 문자를 charAt(i)로 가져와 answer에 추가하면 도니다. 이 때, i의 조건문을 1<str1.length()로 하거나, 1<str2.length()로 하면 된다.
정답
class Solution {
public String solution(String str1, String str2) {
String answer = "";
if(str1.length() != str2.length()){
return answer;
}
for(int i = 0; i<str1.length(); i++){
char str1Char = str1.charAt(i);
char str2Char = str2.charAt(i);
answer += str1Char;
answer += str2Char;
}
return answer;
}
}
2. 문자 리스트를 문자열로 변환하기
문자들이 담겨있는 배열 arr가 주어집니다.
arr의 원소들을 순서대로 이어 붙인 문자열을 return 하는 solution함수를 작성해 주세요.
문제 코드
class Solution {
public String solution(String[] arr) {
String answer = "";
return answer;
}
}
문제 해설
Array의 length를 구해서 for문으로 순환하고, Array의 요소를 꺼내올 수 있느냐를 확인하는 문제다.
Array는 Array.length 형태로 구할 수 있다.
Array의 각 요소는 Array[인덱스 번호]를 사용하면 되니, for문 내에서는 Array[i]를 가져와 answer에 추가하면 된다.
정답
class Solution {
public String solution(String[] arr) {
String answer = "";
for(int i = 0; i<arr.length; i++){
answer += arr[i];
}
return answer;
}
}
3. 문자열 곱하기
문자열 my_string과 정수 k가 주어질 때,
my_string을 k번 반복한 문자열을 return 하는 solution 함수를 작성해 주세요.
문제 코드
class Solution {
public String solution(String my_string, int k) {
String answer = "";
return answer;
}
}
문제 해설
my_string과 k가 매개변수(인자)로 주어진다. 위 문제들과 크게 해결법은 다르지 않다. for문을 사용하되, 조건문을 i < k;로 지정하고, 순회문 안에서 answer에 my_string을 더해주면 된다.
정답
class Solution {
public String solution(String my_string, int k) {
String answer = "";
for(int i = 0; i < k; i++){
answer += my_string;
}
return answer;
}
}
4. 더 크게 합치기
연산 ⊕는 두 정수에 대한 연산으로 두 정수를 붙여서 쓴 값을 반환합니다. 예를 들면 다음과 같습니다.
12 ⊕ 3 = 123
3 ⊕ 12 = 312
양의 정수 a와 b가 주어졌을 때, a ⊕ b와 b ⊕ a 중 더 큰 값을 return 하는 solution 함수를 완성해 주세요.
단, a ⊕ b와 b ⊕ a가 같다면 a ⊕ b를 return 합니다.
문제 코드
class Solution {
public int solution(int a, int b) {
int answer = 0;
return answer;
}
}
문제 해설
요컨대 a와 b를 문자열 형태로 합쳐서, 그것을 정수형으로 형변환하고, 그 두 가지를 서로 비교할 수 있느냐를 묻고 있다.
둘은 괄호에 키워드를 넣는 형태로 서로 형변환이 불가능하므로(그렇게 할 경우 오류가 난다) Integer 메서드의 사용이 필요하다.
Integer.toString(int)
정수int를 String 형태로 변환한다.
참고로 예제 문제에서는 그렇게 하지 않아도 "" + a + b; 형태로도 String으로 변환이 가능하다고 한다.
Integer.parseInt(String)
String을 정수int 형태로 변환한다.
Math.max(int x, int y)
제일 높은 값을 반환한다. 두 개만 있기 때문에 int 문으로 비교하여도 좋다.
정답
class Solution {
public int solution(int a, int b) {
int answer = 0;
int case1 = Integer.parseInt("" + a + b);
int case2 = Integer.parseInt(Integer.toString(b) + Integer.toString(a));
answer = Math.max(case1, case2);
return answer;
}
}
5. 두 수의 연산값 비교하기
연산 ⊕는 두 정수에 대한 연산으로 두 정수를 붙여서 쓴 값을 반환합니다. 예를 들면 다음과 같습니다.
12 ⊕ 3 = 123
3 ⊕ 12 = 312
양의 정수 a와 b가 주어졌을 때, a ⊕ b와 2 * a * b 중 더 큰 값을 return하는 solution 함수를 완성해 주세요.
단, a ⊕ b와 2 * a * b가 같으면 a ⊕ b를 return 합니다.
문제 코드
class Solution {
public int solution(int a, int b) {
int answer = 0;
return answer;
}
}
문제 해설
a ⊕ b의 경우 4번 문제와 동일하다. 그걸 2 * a * b 연산과 비교하면 된다.
이 경우는 그냥 if와 else문을 사용하거나, Math.max 연산자를 사용하면 된다. 같이 값다면 Math.max는 첫번째 인자를 돌려주기 때문이다. 나는 처음에는 if와 else 문을 사용하였는데, 생각해보니 Math.max문도 가능하여 정답을 추가한다.
정답
class Solution {
public int solution(int a, int b) {
int answer = 0;
int plusType = Integer.parseInt("" + a + b);
int multiplyType = 2 * a * b;
answer = Math.max(plusType,multiplyType);
return answer;
}
}
class Solution {
public int solution(int a, int b) {
int answer = 0;
int plusType = Integer.parseInt("" + a + b);
int multiplyType = 2 * a * b;
if(multiplyType > plusType)
answer = multiplyType;
else
answer = plusType;
return answer;
}
}'코테런 > 코딩 기초 트레이닝(완주)' 카테고리의 다른 글
| [코딩 테스트 RUN] 코딩 기초 트레이닝 6일차 (0) | 2026.02.11 |
|---|---|
| [코딩 테스트 RUN] 코딩 기초 트레이닝 5일차 (0) | 2026.02.10 |
| [코딩 테스트 RUN] 코딩 기초 트레이닝 4일차 (0) | 2026.02.09 |
| [코딩 테스트 RUN] 코딩 기초 트레이닝 2일차 (0) | 2026.02.07 |
| [코딩 테스트 RUN] 코딩 기초 트레이닝 1일차 (0) | 2026.02.06 |
