<BOJ>9093번: 단어 뒤집기

라모스·2021년 9월 26일
0

BOJ

목록 보기
7/22
post-thumbnail

문제


9093번: 단어 뒤집기

접근

  • 문자열 한 줄을 입력 받으면 공백을 기준으로 토큰을 잘라 토큰의 순서는 그대로, 토큰 안의 내용만 역순으로 출력하도록 한다.
  • 출력 시 토큰 다음엔 공백으로 구분을 지으며 출력을 해아 함.

내 코드

import java.util.Scanner;
import java.util.Stack;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int count = Integer.parseInt(sc.nextLine());

        StringBuilder result = new StringBuilder();

        for (int i = 0; i < count; i++) {
            String sentence = sc.nextLine() + "\n";
            Stack<Object> stack = new Stack<>();

            for (int j = 0; j < sentence.length(); j++) {
                if (sentence.charAt(j) == ' ' || sentence.charAt(j) == '\n') {
                    while (!stack.empty()) {
                        result.append(stack.pop());
                    }
                    result.append(sentence.charAt(j));
                }
                else {
                    stack.add(sentence.charAt(j));
                }
            }
        }
        System.out.print(result.toString());
    }
}
  • 공백을 기준으로 토큰을 구분하는 조건을 잡는다.
  • input 문자열에 대해 루프를 돌 때, i번째 문자가 공백이 아니라면 stack에 넣는다. 이는 후에 pop 연산을 통해 역순으로 만들기 위함이다.
  • StringBuilder를 사용하는 것이 String을 사용해서 출력하는 것보다 더 효율적이다.
profile
Step by step goes a long way.

0개의 댓글