미소를뿌리는감자의 코딩

[백준 2024/01/26] 1259번 팰린드롬수 본문

코딩 테스트/백준

[백준 2024/01/26] 1259번 팰린드롬수

미뿌감 2024. 1. 27. 01:51
728x90

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

 

1259번: 팰린드롬수

입력은 여러 개의 테스트 케이스로 이루어져 있으며, 각 줄마다 1 이상 99999 이하의 정수가 주어진다. 입력의 마지막 줄에는 0이 주어지며, 이 줄은 문제에 포함되지 않는다.

www.acmicpc.net

 

정말... 백준 하루에 한 문제라도 풀기를 하면서,,

오늘 정말 힘들었다.

SQL 을 이미 40문제 정도 푼 상태에서, 다시 코딩 문제를 푸려고 하니까

집중도 안되고, 너무 피곤하고

근데 내가 다짐한 것이니까 풀어야겠다 하고 앉았는데 ..

어쨌든 오늘은,,, 시간을 오래 쓰는 문제는 너무 졸려서 못할 것 같고,

쉬운 문제 하나 풀었다 ㅎㅎ

그래서 조금.. 죄책감이 드는데... 그래도 푼게 어디야~!!!

 

1. 접근 방법

이번 문제는 명료하고 접근 방법도 간단했다.

그래서 조금 새로운 방법이 없을까 하고 찾아보다가 StringBuilder을 알게 되었다.

String reversed = new StringBuilder(original).reverse().toString();

 

문자열을 더 효율적으로 처리할 수 있도록 설계된 것이 StringBuilder이다.

따라서 StringBuilder에 거꾸로 표현하고자 하는 문자열을 넣어주고, reverseI()를 해준다.

다음으로 .toString을 하는 이유는 StringBuilder 안에 넣어줬으므로, type이 StringBuilder로 바뀌기 때문이다.

따라서, String으로 바꾸기 위해서 .toString() 을 해줘야 한다.

 

StringBuilder의 다른 주요 메서드들

sb.append(...) StringBuilder로 선언된 것의 문자열 끝에 데이터 추가 가능하다.
sb.insert(int offset, ...) 문자열의 지정된 위치에 데이터를 삽입
sb.delete(int start, int end) 문자열의 시작 위치에서 종료 위치까지 문자들을 삭제
sb.deleteCharAt(int index) 지정된 위치의 문자 하나를 삭제
sb.reverse() 문자열의 순서를 뒤집음

 

2. 코드

import java.io.IOException;
import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.util.*;
import java.util.stream.Collectors;

public class b1259 {
    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

       while(true){
           String line = reader.readLine();
           if(Objects.equals(line, "0")){
              break;
           }
           else{
               System.out.println(pelindrom(line));
           }
       }


    }

    public static String pelindrom(String line){
        String op = new StringBuilder(line).reverse().toString();
        if(op.equals(line)){
            return "yes";
        }
        return "no";
    }


}

 

이제 자야지이...

 

728x90