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

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

 

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

 

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;
    }
}