백준 11021 - java ) A+B-7

2021. 8. 24. 00:29코딩/Python

내 사고과정 

백준 내에서 A+B 시리즈는 많은 것 같다. 그중에서도 벌써 7번째라니.. 

A+B의 값을 출력하되 테스트 케이스 문구 Case #1 ~ #N 을 계속 출력해야 한다고 하니 중첩 for문을 사용해야 하나? 생각이 들었다. 근데 테스트 케이스 문구에서도 #1~#N까지도 ++로 for문을 돌려야 하는데..? 

 

실행코드 

import java.util.Scanner; 

public class Test {
	public static void main(String[] args) {
	
		Scanner sc = new Scanner(System.in); 
		int n = sc.nextInt();
		int arr[]=new int[n];
		sc.close();
		
		for(int i=1;i<=n;i++) {
			System.out.println("Case #"+i+":");
			for(int j=1;j<=n;j++) {
				int a = sc.nextInt();
				int b = sc.nextInt();
				arr[i]=a+b;
			}
			sc.close();
			
			for(int k:arr) {
				System.out.println(k);
			}
		
			
		}
	
	   }
}

일단 기존에 A+B-3 문제를 응용하여 for문을 추가했는데 아래와 같은 오류가 발생하였다.

 

5
Case #1:
Exception in thread "main" java.lang.IllegalStateException: Scanner closed
	at java.base/java.util.Scanner.ensureOpen(Unknown Source)
	at java.base/java.util.Scanner.next(Unknown Source)
	at java.base/java.util.Scanner.nextInt(Unknown Source)
	at java.base/java.util.Scanner.nextInt(Unknown Source)
	at Test.main(Test.java:14)

코드를 다시 살펴보니 두 번째 for문은 for문 변수가 j인데 내가 a+b의 값을 arr[i] 배열에다가 저장해서 오류가 난 게 아닐까 싶었다. Scanner가 닫혔다고 한다. (읭?) 

 

그래서 내가 수정해 본 방법은

1) for문 변수 i에서 j로 변경 

2) Scanner 주석처리 

 

2차 오류가 발생하였다.

5
Case #1:
1 1
2 2 
3 3 
4 4 
5 5
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5
	at Test.main(Test.java:16)

왜 이번엔  java.lang.ArrayIndexOutOfBoundsException: 5 자바 인덱스 오류가 뜨는 것인가.. 

(수정된 코드와 비교해보니 Case 문 : 옆에는 답이 나와야 하고 밑 문장에는 연산자 2개가 나오면서 1문장씩 출력해야 했다. 한 번에 5개의 케이스값들이 나오는 것이 아니라) 

 

다른 분의 코드를 참고하니 내가 문제를 너무 꼬아서 생각한 것 같다. 중첩 for문까지 사용할 필요가 없었고 

출력 부분에서 Scanner로 입력한 값을 더해주면 되는 것이었다.. 


수정한 코드 

import java.util.Scanner; 

public class Test {
	public static void main(String[] args) {
	
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		
		for(int i=1;i<=n;i++) {
			int c = sc.nextInt();
			int d = sc.nextInt();
			
			System.out.println("Case #"+i+":"+(c+d));
		}
		
		sc.close();
	
	   }
}

출력 결과 

5
1 1 
Case #1:2
2 2 
Case #2:4
3 3 
Case #3:6
4 4 
Case #4:8
5 5 
Case #5:10

 

'코딩 > Python' 카테고리의 다른 글

백준 2438 - java ) 별 찍기-1  (0) 2021.08.24
백준 11022 - java ) A+B-8  (0) 2021.08.24
백준 2742 - java ) 기찍N  (0) 2021.08.24
백준 2741 - java ) N찍기  (0) 2021.08.20
백준 15552 - java ) 빠른 A+B  (0) 2021.08.19