BAEKJOON 9093번: 단어 뒤집기

Kim Hyen Su·2023년 10월 1일
0

⏲️ 알고리즘

목록 보기
37/95

🎇 문제

🎇 문제 설명

단어(String) 마다 역순으로 뒤집는 간단한 예제이다.

🎇 StringBuilder 클래스

  • 클래스 내 정의된 reverse() 메서드를 사용하여 각 단어를 뒤집어 하나의 StringBuilder 안에 담아 출력하였다.

🎇 제출 코드

import java.io.*;

public class Main{
    public static void main(String[] args)throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int N = Integer.parseInt(br.readLine());
        StringBuilder sb = new StringBuilder();
        
        for(int i=0; i<N; i++){
            String str = br.readLine();
            String[] arr = str.split(" ");
            
            for(int j=0; j < arr.length; j++){
                String tmp = arr[j];
                StringBuilder sb2 = new StringBuilder(tmp);
                tmp = sb2.reverse().toString();
                sb.append(tmp).append(" ");
            }
            
            sb.append("\n");
        }
        
        System.out.println(sb);
        br.close();
    }
}

🎇 다른 방법

  1. Stack으로 구현.
  2. 반복문을 이용해 거꾸로 출력하기.

반복문을 이용해 거꾸로 출력하는 예제는 구현이 상대적으로 쉬우므로, Stack을 이용하여 구현한 코드를 추가로 아래 작성해보았다.

🎇 Stack을 이용한 단어 뒤집기

import java.io.*;
import java.util.Stack;
 
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));
        int t = Integer.parseInt(br.readLine());
 
        while (t-- > 0) {
            Stack<Character> stack = new Stack<>();
            String str = br.readLine() +'\n';
            for (char ch : str.toCharArray()) {
                if (ch == ' ' || ch == '\n') {
                    while (!stack.isEmpty()) {
                        bw.write(stack.pop());
                    }
                    bw.write(ch);
                }
                else stack.push(ch);
            }
        }
        
        bw.flush();
    }
}

참고 포스팅 글

profile
백엔드 서버 엔지니어

0개의 댓글