알고리즘 스터디 - 1주차 2

이강민·2024년 7월 20일
0

커널360

목록 보기
8/56
post-thumbnail

17413

  • 알고리즘 : 문자열
  • 난이도 : 실버3

문제

17413

접근

  • <가 시작하면 문자열을 그대로 출력한다.
  • >가 나오면 다음 문자부터 띄어쓰기까지 뒤집는다.
    • 문자열을 토큰으로 받는다.
    • 문자열을 받는 함수를 작성하고 뒤집힌 문자열을 리턴한다.

가정

  • <가 시작하면 그대로 출력하고 >가 나오면 다음 문자열 토큰은 뒤집으면 되겠다.

풀어보기

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 reader = new BufferedReader(new InputStreamReader(System.in));
        String originalString = reader.readLine();
        StringTokenizer tokenizer = new StringTokenizer(originalString, "<> ", true);
        boolean isTagged = false;
        while(tokenizer.hasMoreTokens()) {
            String token = tokenizer.nextToken();
            if(token.equals("<")){
                isTagged = true;
            }
            if(token.equals(">")){
                isTagged = false;
            }
            if(isTagged){
                System.out.print(token);
            }
            if(!isTagged){
                token = String.valueOf(reverseString(token));
                System.out.print(token);
            }

        }

    }
    public static StringBuilder reverseString(String str){
        StringBuilder s = new StringBuilder();
        for(int i = str.length() - 1; i >= 0; i--){
            s.append(str.charAt(i));
        }
        return s;
    }
}

시행착오

  • StringTokenizer를 잘 사용하지 않아서 사용법을 익히는데 약간의 시간이 소요됨
  • StringBuilder를 통해 문자열을 리턴할 때는 String.valueOf로 타입 변환해야됨

StringTokenizer

StringTokenizer 사용법

StringBuilder

StringBuilder

참고

Why use StringBuffer and StringBuilder

profile
AllTimeDevelop

0개의 댓글

관련 채용 정보