happy coding
[java] 20205. 교수님 그림이 깨지는데요? 본문
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st1 = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st1.nextToken()); //가로세로 길이
int K = Integer.parseInt(st1.nextToken()); //이미지를 늘릴 배수
//해당 배열 일단 생성
int[][] array = new int[N*K][N*K];
for (int i=0 ; i<N*K ; i++) {
StringTokenizer st2 = new StringTokenizer(br.readLine());
for (int j=0 ; j<N*K ; j++) {
array[i][j] = Integer.parseInt(st2.nextToken());
}
}
//수정
//출력
for (int i=0 ; i<N*K ; i++) {
for (int j=0 ; j<N*K ; j++) {
System.out.print(array[i][j] + " ");
}
System.out.println();
}
}
}
왜 틀렸을까 보니까, 두 개의 StringTokenizer를 사용하려면 두 번 입력을 받아야 합니다. 현재 코드에서는 StringTokenizer st1로 한 번 입력을 받은 후에, StringTokenizer st2로 두 번째 입력을 받아야 합니다. 그러므로 StringTokenizer st2를 사용할 때 또 다른 입력을 받아야 하며, 입력이 없어서 NoSuchElementException가 발생하게 되는 것입니다. 두 개의 입력값을 한 번에 받아오기 위해 StringTokenizer를 따로 사용하지 않고, split() 메서드나 StringTokenizer를 사용하지 않고도 처리할 수 있습니다.
라는 답변을 얻었다. 사실, 그전까지 잘 되던게 N을 N*K로 바뀐 후부터 안되는 거라서 저 부분을 굳이 바꿔야 하나 라는 의문은 들었으나 일단 받을 게 없다는 의미니까. 수정했다.
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] sizes = br.readLine().split(" ");
int N = Integer.parseInt(sizes[0]); // 가로세로 길이
int K = Integer.parseInt(sizes[1]); // 이미지를 늘릴 배수
// 픽셀 정보를 담을 2차원 배열 생성
int[][] originalBitmap = new int[N][N];
// 픽셀 정보 입력 받기
for (int i = 0; i < N; i++) {
String[] pixels = br.readLine().split(" ");
for (int j = 0; j < N; j++) {
originalBitmap[i][j] = Integer.parseInt(pixels[j]);
}
}
// 늘린 이미지의 픽셀 정보 출력
for (int i = 0; i < N * K; i++) {
for (int j = 0; j < N * K; j++) {
System.out.print(originalBitmap[i / K][j / K] + " ");
}
System.out.println();
}
}
}
나눗셈으로 합의봄..
https://mimah.tistory.com/entry/Java-StringTokenizer-NoSuchElementException-%EC%98%88%EC%A0%9C
'coding study > baekjoon' 카테고리의 다른 글
[java] 10989. 수 정렬하기 3 (0) | 2023.08.09 |
---|---|
[java] 11653. 소인수분해 (0) | 2023.08.09 |
[java] 1009. 분산 처리 (0) | 2023.08.08 |
[java] 1076. 저항 (0) | 2023.08.08 |
[java] 1152. 단어의 개수 (0) | 2023.08.08 |
Comments