99클럽 코테 스터디 4일차 TIL + 뜨거운 붕어빵

sun·2025년 1월 16일
0
post-thumbnail

오늘의 학습 키워드 및 문제

#문자열 #순서바꾸기 #배열뒤집기
[백준] 뜨거운 붕어빵
https://www.acmicpc.net/problem/11945

문제풀이

문제 좀 잘 읽어라!
처음에 문제를 잘 이해하지 못해서 헤맸었다.

  1. 두 개의 정수 n(행) 과 m(열) 입력
  2. n 반복문으로 한 줄을 입력받아 char 배열로 변환
  3. 배열 뒤집기 반복문 (m/2까지_두번 뒤집기 하면 원래대로 돌아가기 때문)
  4. 배열 뒤집기 반복문이 끝나면 출력
import java.io.*;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        
        // 두 개의 정수 입력
        String[] sArr = br.readLine().split(" ");
        int n = Integer.parseInt(sArr[0]);
        int m = Integer.parseInt(sArr[1]);
        
        // n줄에 걸쳐 한 줄에 m개의 문자가 주어짐
        for(int i=0; i<n; i++) {
            char[] cArr = br.readLine().toCharArray();
            
            // 첫번째와 마지막 값을 바꾸기
            for(int j=0; j<m/2; j++) {
                char tmp = cArr[j];
                cArr[j] = cArr[m-1-j];
                cArr[m-1-j] = tmp;
            }
            bw.write(cArr);
            bw.newLine();
        }
        bw.flush();
        br.close();
        bw.close();
    }
}

다른방법

1. StringBuilder의 reserve()

문제를 푼 후 다른분의 TIL을 구경하다가 발견했는데 이거 정말 대박이더라.
StringBuilder 클래스의 reserve() 메서드가 있는데 문자 시퀀스를 역순으로 바꿔주는 기능이 있다.
코드 길이도 더 적고 메모리도 더 적게썼고 속도도 더 빨랐다.
나의 코드보다 훨씬 가독성이 좋은 코드인 것 같다. 댑악댑악!

import java.io.*;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();
        
        // 두 정수 n(행)과 m(열) 중에서 n을 변수에 저장
        int n = Integer.parseInt(br.readLine().split(" ")[0]);
        
        // 배열뒤집기 반복문
        for(int i=0; i<n; i++) {
            String s = br.readLine();
            sb.append(new StringBuilder(s).reverse()).append("\n");
            
        }
        System.out.println(sb);
        br.close();
    }
}

공부한 내용정리

  • StringBuilder 클래스의 reverse() 메서드는 문자 시퀸스를 역순으로 변환하는 기능
profile
Please, Steadily

0개의 댓글

관련 채용 정보