백준 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 |