[구현] 백준 17413 단어 뒤집기 2

Halo·2025년 5월 31일

Algorithm

목록 보기
56/85
post-thumbnail

🔍 Problem

백준 17413 단어 뒤집기 2


📃 Input&Output


🌁 문제 배경

가. 문제 설명
문자열에서 태그를 제외한 단어들을 뒤집는 문제이다.

나. 접근 방법
1. 입력 문자열 끝까지 순회
2. <나오기전까지tmp에 넣고
3. <이 나오면 tmp에 있는 문자열 reverse처리하고 한번에 출력(띄어쓰기 고려)
4. >이 나올때까지 계속 출력하면된다.

다. 사용할 알고리즘 선택
단순 구현



📒 해결 과정

가. samp입력 문자열 끝까지 순회le

 String input = sc.nextLine();
        String tmp = "";
        String[] sample;
        boolean IsParApper = false;

        for (int i = 0; i < input.length(); i++) {

나. <나오기전까지tmp에 넣고

IsParApper boolean 변수를 사용하여 <가 등장하면 true로 바꾸게 하였다.

if (!IsParApper) {
                tmp += input.charAt(i);
            }

다. <이 나오면 tmp에 있는 문자열 reverse처리하고 한번에 출력(띄어쓰기 고려)

if (input.charAt(i) == '<') {
    IsParApper = true;
    if (!tmp.isEmpty()) {
        sample = tmp.split(" ");
        for (int j = 0; j < sample.length; j++) {
            StringBuffer sb = new StringBuffer(sample[j]);
            System.out.print(sb.reverse().toString());
            if (j != sample.length - 1) {
                System.out.print(" ");
            }
        }
        tmp = "";
    }
}

마. 마지막으로, >이 나올때까지 계속 출력하면된다.

} else {
                if (input.charAt(i) == '>') {
                    IsParApper = false;
                }
                System.out.print(input.charAt(i));
            }

💻 Code

import java.util.*;
import java.io.*;
import java.lang.*;


// 태그를 제외한
public class P17413 {
    public static void main(String args[]) throws IOException {
        Scanner sc = new Scanner(System.in);

        String input = sc.nextLine();
        String tmp = "";
        String[] sample;
        boolean IsParApper = false;

        for (int i = 0; i < input.length(); i++) {


            if (input.charAt(i) == '<') {
                IsParApper = true;
                if (!tmp.isEmpty()) {
                    sample = tmp.split(" ");
                    for (int j = 0; j < sample.length; j++) {
                        StringBuffer sb = new StringBuffer(sample[j]);
                        System.out.print(sb.reverse().toString());
                        if (j != sample.length - 1) {
                            System.out.print(" ");
                        }
                    }
                    tmp = "";
                }
            }
            if (!IsParApper) {
                tmp += input.charAt(i);
            } else {
                if (input.charAt(i) == '>') {
                    IsParApper = false;
                }
                System.out.print(input.charAt(i));
            }
        }

        if (!tmp.isEmpty()) {
            sample = tmp.split(" ");
            for (int j = 0; j < sample.length; j++) {
                StringBuffer sb = new StringBuffer(sample[j]);
                System.out.print(sb.reverse().toString());
                if (j != sample.length - 1) {
                    System.out.print(" ");
                }
            }
        }
    }
}

🎸 기타

가. 문자열 뒤집기

StringBuffer sb = new StringBuffer(문자열);
System.out.print(sb.reverse().toString());

🤔 느낀점

단순구현 문제이고 한번에 성공할 줄 몰랐다. 스택을 사용하려했지만, 굳이 그럴 필요가 없어보였고 처리하고 싶은 문자는 바로 출력하였다.

profile
새끼 고양이 키우고 싶다

0개의 댓글