[백준] 11945번 : 뜨거운 붕어빵 - JAVA
2024. 11. 13. 17:19 - DoosanBaek
728x90
[링크] : https://www.acmicpc.net/problem/11945
💎 문제 분석 & 제약 조건
문제 분석 :
N x M 으로 된 붕어빵 좌우 뒤집기 , 입력된 붕어빵 모양을 행마다 좌우 반전 시킨 형태로 출력하기
제약 조건 :
N과 M은 0 이상 10 이하
N과 M이 0인 경우는 특별히 처리할 필요 없이 빈 입력과 동일하게 다룰수있다.
각행에 주어진 0과 1의 개수는 정확히 M개
입력값에 포함된 각 줄은 모두 좌우 반전되어야 한다.
🚀 의사 결정
첫번째 줄에 N과 M을 받고, 다음 N개의 줄에 M개의 0 또는 1을 입력받는다.
각 줄을 문자열로 받아 좌우 반전시킨다.
반전된 내용을 출력한다.
📜 소스코드(Java)
Scanner 사용 시, 백준 사이트에서 런타임 오류 발생
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// 행렬의 크기 N과 M을 입력
int N = sc.nextInt();
int M = sc.nextInt();
sc.nextLine(); // 버퍼에 남은 줄바꿈 문자를 제거
char[][] matrix = new char[N][M];
// 행렬의 값을 입력
for (int i = 0; i < N; i++) {
matrix[i] = sc.nextLine().toCharArray();
}
sc.close();
// 대칭 변환된 행렬을 출력
for (int i = 0; i < N; i++) {
for (int j = 0; j < M; j++) {
System.out.print(matrix[i][M - j - 1]);
}
System.out.println();
}
}
}
BufferedReader 사용시 오류 없이 동작함
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));
// br로 첫 줄 받아서 st에 저장(N과 M을 공백없이 저장)
StringTokenizer st = new StringTokenizer(br.readLine());
// N, M 입력받기
int N = Integer.parseInt(st.nextToken()); // 받은 첫줄을 N과 M으로 각각 나눔
int M = Integer.parseInt(st.nextToken());
// 각 행을 입력받고, 뒤집어서, 출력한다.
for (int i = 0; i < N; i++) {
// br로 한 줄씩 받아서, char 배열에 한 글자씩 넣는다.
char[] arr = br.readLine().toCharArray();
// 배열에 저장된 값을 역순으로 출력한다.
for(int j = M-1; j >= 0; j--) {
System.out.print(arr[j]);
}
// 한 줄 출력이 끝나면 줄바꿈
System.out.println();
}
}
}
Scanner 를 사용할 경우에, 로컬환경에서는 동작하는듯 보이지만

백준사이트에서 제출 시 런타임 에러가 발생한다.
N 이나 M 이 0인 경우 때문.
Scanner로 문자열을 읽어오는 next() 함수에서 NoSuchElementException 오류를 리턴

더 좋은 방법은 Scanner 대신 BufferedReader를 사용하는 것.

BufferedReader로 문자열 읽어올때 readLine() 함수 설명에는 아무런 데이터 없을경우
오류가 아닌 null을 리턴한다.
백준에서 런타임 에러가 발생하지 않는다.

728x90
'알고리즘' 카테고리의 다른 글
| [백준] 2167번 : 2차원 배열의 합 - JAVA (0) | 2024.11.13 |
|---|---|
| [백준] 2018번 : 수들의 합 5 - JAVA (0) | 2024.11.13 |
| [백준] 17207번 : 돌려막기 - JAVA (0) | 2024.11.13 |
| [백준] 2477번 : 참외밭 - JAVA (0) | 2024.11.13 |
| [백준] 2445번 : 별 찍기 - JAVA (0) | 2024.11.13 |
| [백준] 2475번 : 검증수 -JAVA (0) | 2024.11.13 |
| [백준] 1330번 : 두 수 비교하기 - JAVA (0) | 2024.11.13 |
| 프로그래머스 코딩테스트 3진법 뒤집기 (0) | 2022.10.02 |