10주차 구현 : 문제 1

✔ BOJ_17413

괄호를 기준으로 문자열을 판별합니다. 괄호 내부에는 문자열을 뒤집지 않기 위해 check라는 변수를 할당하고 이용했습니다. String에다가 더해놓고 >를 만나면 StringBuffer를 이용하여 뒤집는 방식으로 코드를 작성했는데, 찾아보니 스택을 사용하면 보다 더 빠르게 구현할 수 있다는 것을 깨달았습니다 .. !


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        // 소문자 숫자 공백 특수문자로만 이루어진 문자 s
        // <>로 등장하는 경우 두 문자의 개수는 같다.
        // <길이가 3이사인 부분 문자열 + 알파벳소문자와 공백만 있다>
        // 연속하는 두 단어는 공백 하나로 구분한다. 태그는 단어가 아니며 태그와 단어 사이에는 공백이 없다.
        String s = br.readLine();
        String temp = "";
        String answer = "";
        boolean check = false;
        for(int i=0;i<s.length();i++){
            char c = s.charAt(i);
            if(c=='<'){
                StringBuffer sb = new StringBuffer(temp);
                answer+= sb.reverse().toString();
                answer+=c;
                temp = "";
                check = true;}
            else if(c=='>'){
                answer+=c;
                check = false;}
            else if(check){
                answer+=c;
            }
            // 공백
            else if(!check && c==' '){
                StringBuffer sb = new StringBuffer(temp);
                answer+= sb.reverse().toString();
                answer+=c;
                temp = "";
            }
            else if (!check){
                temp +=c;}

    }

        if(!temp.isEmpty()){
            StringBuffer sb = new StringBuffer(temp);
            answer+= sb.reverse().toString();
            temp = "";
        }
        System.out.println(answer);
}}

좋은 웹페이지 즐겨찾기