본문 바로가기
Study or Lecture/항해 99클럽 코딩테스트 스터디

항해 99클럽 코딩테스트 스터디 13일차 TIL (자바/비기너)

by yoondoo 2024. 11. 9.
728x90

<오늘의 학습 키워드>

- 스택

<오늘의 문제>

제목 : 백준 / 브론즈2 / 12605번 단어순서 뒤집기

https://www.acmicpc.net/problem/12605

<풀이>

정답은 더보기

더보기
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Stack;

public class Main {

    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int totalCase = Integer.parseInt(br.readLine());

        StringBuilder answer = new StringBuilder();
        for (int i = 0; i < totalCase; i++) {
            String[] str = br.readLine().split(" ");

            Stack<String> strings = new Stack<>();
            for (String s : str) {
                strings.push(s);
            }

            StringBuilder sb = new StringBuilder();
            while (!strings.isEmpty()) {
                sb.append(" ").append(strings.pop());
            }

            answer.append("Case #").append(i+1).append(":").append(sb).append("\n");
        }

        System.out.println(answer);
    }
}

 

- 사실 예전에 한 번 풀어봤었는데 그때는 배열을 사용해서 풀었었는데 이번에는 스택을 사용해서 풀어보았다.

- 먼저 TestCase를 입력 받아서 입력된 수 만큼 for문을 반복해서 str을 입력받는다.

- 입력 받은 str을 띄어쓰기를 기준으로 String배열에 담아서 stack에 0번 인덱스부터 마지막 인덱스 순서로 push()해준다.

- 스택의 특성상 LIFO이기 때문에 정답을 만들어줄 answer문자열에 stack이 empty가 될 때까지 pop()해서 answer에 붙힌다.

- 마지막으로 예제 출력에 맞게 출력시키면 된다.

 

<결론, 주의할점>

- 마지막 출력 예제에 보면 Case #1 부터 출력이된다. 0이 아니다.

반응형

댓글