본문 바로가기
eomoff
Dev Log/Algorithm

[프로그래머스] 코딩 기초 트레이닝 - Day 3

eomoff 2026. 9. 20. 17:28

문제 1. 문자열 섞기

문제: 길이가 같은 두 문자열 str1str2가 주어집니다. 두 문자열의 각 문자가 앞에서부터 서로 번갈아가면서 한 번씩 등장하는 문자열을 만들어 return 하는 solution 함수를 완성해 주세요.

  • 1 ≤ str1의 길이 = str2의 길이 ≤ 10
  • str1str2는 알파벳 소문자로 이루어진 문자열
입력: solution("aaaaa", "bbbbb")
출력: "ababababab"

정답:

class Solution {
    public String solution(String str1, String str2) {
        StringBuilder result = new StringBuilder();

        for(int i = 0; i < str1.length(); i++) {
            result.append(str1.charAt(i)).append(str2.charAt(i));
        }
        return String.valueOf(result);

    }
}

획득: 처음엔 char[] 배열을 생성해서 작성했는데 charAt()을 사용하면 따로 배열을 생성하지 않아도 된다는것을 알았음


문제 2. 문자 리스트를 문자열로 변환하기

문제: 문자들이 담겨있는 배열 arr가 주어집니다. arr의 원소들을 순서대로 이어 붙인 문자열을 return 하는 solution 함수를 작성해 주세요.

  • 1 ≤ arr의 길이 ≤ 200
  • arr의 원소는 전부 알파벳 소문자로 이루어진 길이가 1인 문자열
입력: solution(["a", "b", "c"])
출력: "abc"

정답:

class Solution {
    public String solution(String[] arr) {
        StringBuilder result = new StringBuilder();

        for(String c : arr) {
            result.append(c);
        }
        return String.valueOf(result);
    }
}

획득: 배열 -> 문자열 변환


문제 3. 문자열 곱하기

문제: 문자열 my_string과 정수 k가 주어질 때, my_stringk번 반복한 문자열을 return 하는 solution 함수를 작성해 주세요.

  • 1 ≤ my_string의 길이 ≤ 100
  • my_string은 영소문자로만 이루어짐
  • 1 ≤ k ≤ 100
입력: solution("string", 3)
출력: "stringstringstring"

입력: solution("love", 10)
출력: "lovelovelovelovelovelovelovelovelovelove"

정답:

class Solution {
    public String solution(String my_string, int k) {
        return my_string.repeat(k);
    }
}

획득: repaet()을 이미 알고 있어서 반복문 사용하지 않았음


문제 4. 더 크게 합치기

문제: 연산 ⊕는 두 정수를 붙여서 쓴 값을 반환합니다. (예: 12 ⊕ 3 = 123, 3 ⊕ 12 = 312) 양의 정수 ab가 주어졌을 때, a ⊕ bb ⊕ a 중 더 큰 값을 return 하는 solution 함수를 완성해 주세요. 단, 두 값이 같다면 a ⊕ b를 return 합니다.

  • 1 ≤ a, b < 10,000
입력: solution(9, 91)
출력: 991

입력: solution(89, 8)
출력: 898

정답:

class Solution {
    public int solution(int a, int b) {
        int ab = Integer.parseInt("" + a + b);
        int ba = Integer.parseInt("" + b + a);
        return Math.max(ab, ba);
    }
}

획득:

  1. java에선 숫자를 합하지 않고 붙일때 ""을 더해주면 된다는것을 알았음
  2. Math.max(): 비교해서 큰 수 골라주는거

문제 5. 두 수의 연산값 비교하기

문제: 연산 ⊕는 두 정수를 붙여서 쓴 값을 반환합니다. (예: 12 ⊕ 3 = 123, 3 ⊕ 12 = 312) 양의 정수 ab가 주어졌을 때, a ⊕ b2 * a * b 중 더 큰 값을 return 하는 solution 함수를 완성해 주세요. 단, 두 값이 같으면 a ⊕ b를 return 합니다.

  • 1 ≤ a, b < 10,000
입력: solution(2, 91)
출력: 364

입력: solution(91, 2)
출력: 912

정답:

class Solution {
    public int solution(int a, int b) {
        return Math.max((2*a*b),(Integer.parseInt(""+a+b)));
    }
}

획득: Math.max와 ""문자열 붙이기 배운거 활용