티스토리 뷰

728x90
반응형

문제 요약

문제풀이 

 이번 문제는 Palindromic Number 문제이다. 근데 여기서 진법으로 변환해서 뒤집은 숫자와 다른지 파악하면 된다.

여기서 구현 해야 할것은 n진법 변환 작업이다. 자바는 n진법 변환 하는 함수 제공하는데 파이썬은 직접 구현 해야한다.

파이썬 진법 구현은 아래와 같이 하면된다.

# 진법 변환
def baseN(num: int, base) -> int:
    parse = ''
    while num:
        num, mod = divmod(num, base)
        parse += str(mod)

    # 뒤집어야 집법 변환 작업이 끝난다.
    return parse[::-1]

 진법을 문자열로 만든후 뒤집어서 같은지만 확인 하면 구현은 끝이다.

Code

Python

class Solution:
    def isStrictlyPalindromic(self, n: int) -> bool:

        # 진법 변환
        def baseN(num: int, base) -> int:
            parse = ''
            while num:
                num, mod = divmod(num, base)
                parse += str(mod)

            # 뒤집어야 집법 변환 작업이 끝난다.
            return parse[::-1]

        for i in range(2, n - 1):
            parseInt = baseN(n, i)
            if parseInt != parseInt[::-1]:
                return False

        return True

Java

  • Integer.toString(n, i): 숫자 n을 i진법으로 변환후 문자열로 반환 한다.
  • sb.reverse().toString(): 일반 문자열에서 문자열 뒤집기 제공 안한다. 그래서 StringBuffer class사용해서 문자열 뒤집으면 된다.
class Solution {
    public boolean isStrictlyPalindromic(int n) {
        StringBuffer sb;
        
        for (int i = 2; i <= n - 2; i++) {
            sb = new StringBuffer(Integer.toString(n, i));

            if(!sb.toString().equals(sb.reverse().toString())){
                return false;
            }
        }

        return true;
    }
}
728x90
반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함