백준 - 뜨거운 붕어빵 11945번 [2일차]
시간제한 | 메모리 제한 |
1초 | 32MB |
문제
고려대학교에 입학한 새내기 호돌이는 안암역을 지나다가 한 붕어빵 장수를 만났어요.
“안녕, 안녕, 안녕하십니까, 아저씨! 붕어빵 두 개 주세요.”
“안녕을 세 번 외쳤으니 붕어빵 세 개!”
붕어빵 두 개의 값을 내고 세 개를 받은 호돌이는 기분이 좋았어요. 호돌이가 붕어빵 하나를 꺼내어 한 입 물었는데…. 너무 뜨거워서 그만 붕어빵을 떨어뜨리고 말았어요ㅠㅠ
붕어빵은 자유 낙하운동을 하면서 땅에 떨어졌는데 신기하게도 좌우가 뒤집힌 모양으로 착지했답니다. 호돌이가 붕어빵을 한 입 물기 전의 모양이 입력으로 주어지면, 땅에 떨어졌을 때에는 어떤 모양일지 출력하세요.
입력
첫째 줄에는 두 개의 정수 N과 M(0≤N,M≤10)이 주어집니다. 둘째 줄부터 N개의 줄에 걸쳐 붕어빵의 모양이 주어집니다. 각 행에는 공백을 나타내는 ‘0‘ 또는 붕어빵을 나타내는 ‘1’이 총 M개 주어집니다.
출력
입력으로 주어진 붕어빵이 좌우로 뒤집힌 모양을 출력하세요.
흰트
입력으로 주어지는 각 행을 반전시켜서 출력하면 됩니다. 입력의 1행 1열은 출력의 1행 M열로, 입력의 1행 2열은 출력의 1행 M-1열로 … 입력의 1행 M열은 출력의 1행 1열로 … 입력의 N행 M열은 출력의 N행 1열로 출력하세요.
나의코드
package day2;
import java.io.*;
import java.util.Arrays;
import java.util.Scanner;
import java.util.StringTokenizer;
public class Solution4 {
public static void main(String[] args) throws IOException {
// 뜨거운 붕어빵 - 11945번
// 행과 열 - 다차원 배열
// 한행의 데이터를 거꾸로 뒤집어야함
// 반복문을 사용
// 거꾸로 뒤집어서 복사할 배열 만들어주기
// 받은 입력과 출력을 해야하기때문에 BufferedReader / BufferedWriter
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int row = Integer.parseInt(st.nextToken());
int column = Integer.parseInt(st.nextToken());
int[][] array = new int[row][column];
int[][] reverseArr = new int[row][column];
// 한줄씩 읽어서 array배열에 넣어줌
for (int i = 0; i < row; i++) {
String line = br.readLine();
for (int j = 0; j < column; j++) {
array[i][j] = Integer.parseInt(line.substring(j, j+1));
}
//원본 배열의 마지막 인덱스 (array[i][j].length -1)부터 탐색하기
//거꾸로 배열 순서대로 값 세팅
for(int k = array[i].length -1, q = 0; k >=0;k--,q++){
reverseArr[i][q] = array[i][k];
}
}
StringBuilder sb = new StringBuilder();
for (int i = 0; i < row; i++) {
for (int j = 0; j < column; j++) {
sb.append(reverseArr[i][j]);
}
sb.append("\n");
}
System.out.println(sb.toString());
}
}
처음에 문제를 보고 대체 이게 먼소리 인가 했다..ㅎ
결론적으로 각 행을 반전시키면되는 문제여서 2차 배열에 있는 배열을 reverse 시켜주기로했다
반전시켜주는데는 여러 방법이 있지만 for문을 사용해서 for(int k = array[i].length-1, q =0; k >=0; k--,q++) 조건을 줘서 반전시켜 배열로 만들었다.
나는 직접 배열을 뒤집었는데
StringBuffer.reverse를 사용하면 쉽고 간단하게 문제를 풀수 있었다
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
// StringBuffer로 문자열 전체를 뒤집기 때문에 행까지 받아올 필요 X
// 열 받아오기
int column = Integer.parseInt(st.nextToken());
for(int i =1; i<=column; i++){
// 열 수 만큼 반복해 붕어빵 받아오기
StringBuffer sb = new StringBuffer(br.readLine());
// StringBuffer의 .resverse() 메서드 사용해 문자열 뒤집기
System.out.print(sb.reverse());
System.out.println();
}
}
}
'Algorithm > 코딩테스트' 카테고리의 다른 글
[코딩테스트] 백준 - 수들의 합 5 (0) | 2024.07.18 |
---|---|
[코딩테스트] 백준 - 수들의 합 2 (0) | 2024.07.18 |
[코딩테스트] 백준 - 별 찍기 - 8 (0) | 2024.07.18 |
[코딩테스트] 백준 - 별 찍기 - 1 (0) | 2024.07.18 |
[코딩테스트] 백준 - 구구단 (0) | 2024.07.18 |