백준/브론즈 탈출하기

[Java] 백준 10953 : A+B -6

정보통신 고심이 2023. 11. 23. 14:15

문제

두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.

 

입력

첫째 줄에 테스트 케이스의 개수 T가 주어진다.

각 테스트 케이스는 한 줄로 이루어져 있으며, 각 줄에 A와 B가 주어진다. A와 B는 콤마(,)로 구분되어 있다. (0 < A, B < 10)

 

출력

각 테스트 케이스마다 A+B를 출력한다.

 

입력 예제

5
1,1
2,3
3,4
9,8
5,2

 

출력 예제

2
5
7
17
7

 

 

정답 코드

import java.util.*;

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc = new Scanner(System.in);
        int T = sc.nextInt(); // 테스트 개수 입력 받음
        
        // 테스트 케이스를 입력 받음
        for(int i=0; i<T; i++){
            String[] input = sc.next().split(","); // ,와 정수 분리 하기 위해 split 사용 (먼저 문자열 배열 선언 필요)
            int A = Integer.parseInt(input[0]);
            int B = Integer.parseInt(input[1]);
            System.out.println(A+B);
        }
        sc.close();
    }

}

 

 

더 나아가기

접근 방법

1. 테스트 개수 입력 받음

2. ,(콤마) 분리 필요 -> 문자열로 변환

3. 문자열을 다시 정수로 변환 필요 

4. 변환된 정수를 다시 덧셈하여 출력

 

2번 과정에서 고민이 많았는데, 

처음에는 문자열 배열 생성한 뒤 replace(",", "") 으로 ,(콤마)를 분리하는 방법으로 접근 해봤는데

예를 들어 1,1 -> 1 1로 바꾼다해도 이것을 다시 어떻게 덧셈 할지 고민이 됐다. 

 

그리고 반복문 배열에서

String[] input = new String[T];

for(int i-0; i<T; i++){
	String[i] input = sc.next();
}

 

 이런식으로 선언해야 되나 싶었는데 일단 Java 문법에 맞지 않고

String[] input = new String[T];

for(int i-0; i<T; i++){
	input[i] = sc.next();
}

 

이렇게 선언 하려고 하니까 split하는 것이 또 문제가 됐다. 

split 메소드는 String[]를 반환하기 때문에, String[] 타입의 변수에 저장해야하기에

 

for(int i=0; i<T; i++){
            String[] input = sc.next().split(",");
}

 

이렇게 문자열 배열을 선언하고

split 메소드를 String[]를 반환하게 함께 선언

 

반복문 변수 i는 단순히 반복문 횟수 count에 사용된다.