Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Tags more
Archives
Today
Total
관리 메뉴

luke

[백준] - 단어 뒤집기 (9093) (자바/Java) 본문

알고리즘문제/백준 문제(Java)

[백준] - 단어 뒤집기 (9093) (자바/Java)

luke-king 2024. 4. 27. 16:25

 

 

 

 

 

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

 

 

 

 

문제.


 

 

 

 

 

 

 

풀이.


 

public class Main {
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        int num = sc.nextInt();
        sc.nextLine();

        for (int i = 0; i < num; i++) {
            String str = sc.nextLine();
            StringBuffer sb = new StringBuffer(str);
            String reverse = sb.reverse().toString();
            String[] split = reverse.split(" ");

            for (int j = split.length - 1; j >= 0; j--) {
                System.out.print(split[j]);
                if (j > 0) {
                    System.out.print(" ");
                }
            }
            System.out.println();

        }
        sc.close();

    }

}

 

이번 문제는 " 단어 뒤집기 " 문제다.

입력한 문자열이 뒤집어서 출력하는 건데 공백을 기준으로 두고 순서는 같아야 한다.

문제에 처음 접근 했을 때 어려움이 있었지만 나름(?) 구글링을 통해 다시 한번 새로운 걸 알게 되어 풀이에 성공했다.

(근데 백준 링크 걸었을때 밑에 이미지랑 같이 나왔었는데 오늘은 왜 안 나오는지... 이런 오류 아시는 분 계시면 답글 한 번만 부탁드려요ㅠㅠ...)

그럼 바로 문제 풀이를 해보겠다.

 

1. 2번 문자열을 입력해야 하기에 입력값 만큼 문자열을 입력해 주도록 반복문을 만들어준다.

 

2. StringBuffer를 사용해 reverse메서드를 사용해준다. (문자열을 거꾸로 출력해줌.)

 

3. 다음으로 split()을 사용해 공백 기준으로 잘라 배열에 넣어준다.

 

4. split 배열에 넣어준 값들은 " I ma yppah yadot "가 아닌 " yadot yppah ma i " 로 나온다.

 

5. 그 문제를 해결하기 위해 배열의 길이를 거꾸로 출력해 줘  " I ma yppah yadot " 가 나오도록 한다.

 

6. 하지만 문제는 공백이다. 출력을 하게 되면 문자열이 모두 붙어서 나오는데 조건식을 추가해 j가 배열의 길이보다 클 경우 공백을 추가해 준다. 그렇게 되면 배열의 index3이 출력된 다음 공백이 추가된다. 그럼 끝이다.