# 문제
정수(int)가 주어지면, 팰린드롬(palindrome)인지 알아내시오.
팰린드롬이란, 앞에서부터 읽으나 뒤에서부터 읽으나 같은 단어를 말합니다.
단, 정수를 문자열로 바꾸면 안됩니다.
예제)
Input: 12345
Output: False
Input: -101
Output: False
Input: 11111
Output: True
Input: 12421
Output: True
-------------------
해당 문제는 팰린드롬 수를 체크하는 알고리즘을 짜는 것이다.
이전 알고리즘 문제보단 꽤 간단하게 풀수 있었다.
(단 음수일 경우 팰린드롬이 되지 않는다는것을 명심하자)
# 소스코드
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 32 33 34 35 36 37 38 39 40 41 42 43 | import java.util.Scanner; /* 정수(int)가 주어지면, 팰린드롬(palindrome)인지 알아내시오. 팰린드롬이란, 앞에서부터 읽으나 뒤에서부터 읽으나 같은 단어를 말합니다. (단, 정수를 문자열로 바꾸면 안됩니다.) */ public class Main { public static void main(String[] args) { // 초기화 int Input = 0; boolean result = true; int InputLength = 0; Scanner SC = new Scanner(System.in); // 사용자에게 값을 입력 받는 부분 System.out.print("팰린드롬수를 알아내기 위한 값을 입력해 주세요 : "); Input = SC.nextInt(); // 입력 받은 값의 자릿수를 가져온다. InputLength = (int)Math.log10(Input) + 1; // 팰린드롬인지 아닌지 확인하는 과정 for(int i = 1; i <= (InputLength / 2); i++) { // 음수 체크 과정 if(Input < 0) { result = false; break; } if((int)(Input / (int)Math.pow(10, (InputLength - i))) == (Input%(int)Math.pow(10, i))) { // 양쪽 자릿수 값이 같을 때 그 부분을 없앤다. // 예 : 12321 => 232 Input = (Input - ((int)(Input % (int)Math.pow(10, InputLength)) + (Input%(int)Math.pow(10, i)))) / 10; }else { result = false; break; } } System.out.print("결과 : " + result); } } | cs |
# 마무리
위 포스트는 제가 직접 제작한 것 입니다.
그렇기 때문에 틀린점이나 설명이 엉성한 점이 존재할 수 있습니다.
만약 틀린점이나 설명이 엉성한 부분이 존재하면 댓글로 알려주세요.
빠른 처리 하도록 하겠습니다.
티스토리 앱으로는 댓글 이용이 불가능 하므로 웹 브라우저로 봐 주세요
(URL : http://junprogramer.tistory.com/)
읽어주셔서 감사합니다.
'잡다한 기술' 카테고리의 다른 글
우아한 형제들 2차 코딩테스트 탈락 (0) | 2018.06.24 |
---|---|
[K-Move/해외인턴/IT인턴]미국에서 받은 주차 티켓 처리하기 (0) | 2018.06.19 |
[알고리즘]카탈란 수 구하기 (0) | 2018.06.17 |
비주얼 스튜디오 코드(Visual Studio Code) 저장시 마지막 라인 오류 (0) | 2018.06.08 |
[티스토리 초대장] 5월 티스토리 초대장 배포 (0) | 2018.06.07 |