[백준] 12605번: 단어순서 뒤집기 (JAVA)

2022. 1. 6. 17:18알고리즘

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

 

12605번: 단어순서 뒤집기

스페이스로 띄어쓰기 된 단어들의 리스트가 주어질때, 단어들을 반대 순서로 뒤집어라. 각 라인은 w개의 영단어로 이루어져 있으며, 총 L개의 알파벳을 가진다. 각 행은 알파벳과 스페이스로만

www.acmicpc.net

 


문제 설명

입력으로 this is a test가 들어오면 입력받은 것들의 순서를 바꿔서 test a is this로 출력하는 문제이다.

 

코드

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class Main {
	public static void main(String[] args) throws Exception {
		var br = new BufferedReader(new InputStreamReader(System.in));

		int n = Integer.parseInt(br.readLine());

		for (int i = 0; i < n; i++) {
			String str = br.readLine();
			String strArr[] = str.split(" ");

			System.out.print("Case #" + (i + 1) + ": ");
			for (int j = strArr.length - 1; j >= 0; j--) {
				System.out.print(strArr[j] + " ");
			}
			
			System.out.println();
		}
	}
}

 

코드 설명

이 문제의 알고리즘 분류를 보면 스택으로 되어있는데, 굳이 스택으로 풀 필요가 없다고 생각하였다.

나는 입력받은 문자열을 공백으로 split을 하여 배열에 넣었다.

ex) 입력: this is a test

strArr[0] = this
strArr[1] = is
strArr[2] = a
strArr[3] = test

그럼 strArr에 이런 식으로 값들이 들어가는데 나는 for문을 strArr의 길이-1부터 0까지 돌렸다.

이 말은 즉슨 strArr[3]부터 strArr[0] 순서로 출력을 시켰다는 뜻이다.

그러면 출력은 test a is this로 알맞게 나오는 것을 볼 수 있다.