ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 1/23기록 - 백준 1259
    Algorithm 2022. 1. 23. 11:12
    728x90

    아침에 날씨가 좀 꿀꿀해서 기분이 상쾌하진 않았지만 매일 아침의 시작을 알리는 작업으로 하기로 한 나와의 약속을 위해 알고리즘 문제를 하나 풀었다.

     

    오늘의 문제는 백준 1259번 펠린드롬수 문제이다.

     

     

    펠린드롬수란 앞에서 읽어도 뒤에서 읽어도 똑같은 수를 말한다. 파이썬 공부를 할 때 봤던 회문판별이랑 같은 원리였다. 사실 회문판별은 중간을 잘라서 앞뒤를 비교하는 거였는데, 하다 보니 잘 기억이 나지를 않아서 그냥 앞뒤를 비교하는 방식을 택했다.

     

    알고리즘 생각

    1. string 문자열 하나를 입력받는다. (숫자 이지만 equals로 비교를 하기위해서는 문자열로 인식시키는 것이 좋다.)

    2. equals 메소드를 이용해서 0이 되면 break를 해준다.

    3. 입력받은 문자열을 배열의 인덱스로 문자 하나하나를 떼어내준다. charAt()이나 substring(index, index) 이용

    4. 뒤집힌 배열을 담을 list를 하나 생성해 준다.

    5. list에 입력 받은 문자열을 뒤집어서 add() 메소드를 활용해 담아준다.

    6. string 변수를 하나 선언해서 get() 메소드를 활용해 문자를 하나씩 꺼낸다.

    7. 해당 문자가 입력받은 문자열 배열과 같으면 count를 해준다.

    8. count 개수가 만약 입력받은 문자열 길이와 동일하면 yes출력, 아니면 no출력

    9. stringbuilder를 이용해서 한꺼번에 마지막에 출력할 수 있도록 해준다.

     

     

    이렇게 풀 수 있었다. 회문 판별을 이용하여 중간을 잘라서 풀면 더 효율적일 것 같긴 한데, 일단은 풀었던 것만으로 만족...

     

    **ArrayList를 활용하려니 타입이 char 타입은 존재하지 않아 charAt() 말고 substring을 사용했다.

    substring(i,i+1)은 사실상 자기자신 문자 하나만을 말한다. -> String타입으로 해결하려 하면 substring을 이용하자.

     

    처음에는 count 변수 없이 바로 contains() 아래에 yes, no를 출력했는데, 그러니 문자 마다 yes, no를 출력하게 되었다. 그래서 count변수를 하나 선언해서 최종적인 펠린드롬수를 찾아낼 수 있었다.

     

    이렇게 정답 완료

     

    1/23 기록 끝!!!!!!!!

    728x90

    'Algorithm' 카테고리의 다른 글

    1/25기록 - 백준 2161  (0) 2022.01.25
    1/24기록 - 백준 1357  (0) 2022.01.24
    1/22기록 - 백준 4344  (0) 2022.01.22
    1/21기록 - 백준 1546  (0) 2022.01.21
    1/20기록 - 백준 1110  (0) 2022.01.20
Designed by Tistory.