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

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

 

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

 

 

1. 덧셈식 출력하기

 

두 정수 a, b가 주어질 때 다음과 같은 형태의 계산식을 출력하는 코드를 작성해 보세요.
a + b = c

 

문제 코드

import java.util.Scanner;

public class Solution {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int a = sc.nextInt();
        int b = sc.nextInt();

        System.out.println(a + b);
    }
}

 

 

문제 해설

a와 b의 값을 연산식 +로 합쳐서 출력하면 된다. 정답에서는 int c를 생성하여 a + b로 하였지만, (a + b) 만으로 처리하여도 좋다. 문자와는 결합연산으로 처리했다.

 

 

정답

import java.util.Scanner;

public class Solution {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int a = sc.nextInt();
        int b = sc.nextInt();
        int c = a + b;

        System.out.println(a + " + " + b + " = " + c);
    }
}

 

 

 

2. 문자열 붙여서 출력하기

 

두 개의 문자열 str1, str2가 공백으로 구분되어 입력으로 주어집니다.
입출력 예와 같이 str1과 str2을 이어서 출력하는 코드를 작성해 보세요.
입력: str1 str2 -> 출력: str1str2

 

문제 코드

import java.util.Scanner;

public class Solution {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String a = sc.next();
        String b = sc.next();
    }
}

 

 

정답 해설

각 String인 a와 b를 결합연산자로 합치면 된다. + 를 사용한다.

 

 

정답

import java.util.Scanner;

public class Solution {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String a = sc.next();
        String b = sc.next();
        
        System.out.println(a + b);
    }
}

 

 

 

3. 문자열 돌리기

 

문자열 str이 주어집니다.
문자열을 시계방향으로 90도 돌려서 아래 입출력 예와 같이 출력하는 코드를 작성해 보세요.
입력: abcde -> 출력: a
b
c
d
e

 

문제 코드

import java.util.Scanner;

public class Solution {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String a = sc.next();
    }
}

 

 

문제 해설

a를 for문으로 각 문자마다 순회하여 println문으로 출력해주면 된다.

조건에 i < a.length(); 를 사용하고, 각 문자의 추출은 a.charAt(i)를 사용하면 된다.

 

 

정답

import java.util.Scanner;

public class Solution {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String a = sc.next();
        
        for(int i = 0; i < a.length(); i++){
            System.out.println(a.charAt(i));
        }
    }
}

 

 

 

4. 홀짝 구분하기

자연수 n이 입력으로 주어졌을 때 만약 n이 짝수이면 "n is even"을,
홀수이면 "n is odd"를 출력하는 코드를 작성해 보세요.

문제 코드

import java.util.Scanner;

public class Solution {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
    }
}

 

 

문제 해설

짝수와 홀수에 대한 여부는 나머지 연산 %를 주로 사용한다. %는 나눗셈을 한 다음 그 나머지를 반환하는데, % 2 == 0 이라면 짝수, 그렇지 않으면 홀수다.

즉, if(n % 2 == 0)이라면 n is even을 출력하면 되고, 그 외에는 odd를 하면 된다(둘이 반대여도 차이는 없다.)

 

 

정답

import java.util.Scanner;

public class Solution {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        if(n % 2 == 0) {
            System.out.println(n + " is even");
        } else {
            System.out.println(n + " is odd");
        }
        
    }
}

 

 

 

5. 문자열 겹쳐쓰기

문자열 my_string, overwrite_string과 정수 s가 주어집니다. 문자열 my_string의 인덱스 s부터 overwrite_string의 길이만큼을 문자열 overwrite_string으로 바꾼 문자열을 return 하는 solution 함수를 작성해 주세요.

 

 

문제 코드

class Solution {
    public String solution(String my_string, String overwrite_string, int s) {
        String answer = "";
        return answer;
    }
}

 

 

문제 해설

본격 함정 문제…

 

처음 정답으로 낸 것은 이것.

class Solution {
    public String solution(String my_string, String overwrite_string, int s) {
        String answer = "";
        String str = my_string.substring(s, + overwrite_string.length() + s);
        
        answer = my_string.replace(str, overwrite_string);
        
        return answer;
    }
}

 

 

s번부터 overwrite_string.length() + s번까지 잘라 변환할 문자를 가져온 뒤, str.replace를 사용하여 수정하려 했는데 … 6번 케이스에서 오답이 났다.

 

왜 이런 오답이 났는가? 6번 케이스가 뭔진 모르지만 str 부분과 일치하는 부분이 나와서 그렇다고 추정된다. 즉, 이 문제는 str.replace의 문제점에 대해서 알고 있느냐를 테스트하는 문제이기도 한 것. 제대로 당했다…

 

그렇다면 어떻게 해야하는가?

substring으로 overwrite_string 앞 뒤를 잘라 이어붙이면 된다.

즉, my_string.substring(0, s) + overwrite_string + my_string.substring(overwrite_string.length()) 형태로 이어붙여서 반환하면 된다.

 

substring

substring은 문자열을 자르는 메서드로, substring(시작점, 끝점) 형태로 사용하며, 끝점을 생략할 경우 끝까지가 출력된다.

 

 

정답

class Solution {
    public String solution(String my_string, String overwrite_string, int s) {
        String answer = "";
        answer = my_string.substring(0, s) + overwrite_string + my_string.substring(s + overwrite_string.length());
        
        return answer;
    }
}