//GitHub https://github.com/vellimole0621
vellimole0621 - Overview
vellimole0621 has 4 repositories available. Follow their code on GitHub.
github.com
백준 1259번 : 팰린드롬수
(문제 - https://www.acmicpc.net/problem/1259 )
문제 설명 : 0이 아닌 수를 입력 받아서, 그 수가 팰린드롬수(좌우 대칭인 수)인지 판별하는 문제
풀이 : 우선, 수 하나 입력 받음 >> 0이라면 종료, 아니면 반복해 진행 >> 입력 값 문자열 배열로 변경시킴 >> 수 길이를 나눠, 인덱스 중간값 찾기 >> 횟수 저장 변수 초기화 >> 수의 길이가 2로 나누어지는 경우와 아닌 경우 Case 분류해서 검사 >> 판정 결과 출력 "yes" or "no" >> 횟수 저장 변수 다시 초기화
// 1259번 팰린드롬수
package S2209;
import java.util.*;
public class Main {
public static void main(String[] arsgs){
Scanner sc = new Scanner(System.in);
// 우선 하나 입력 받기
int Num = sc.nextInt();
// 0 입력 될 때까지 반복
while(Num != 0){
// 입력 값 문자열 배열로 변겅
String NumS = String.valueOf(Num);
char[] NumC = NumS.toCharArray();
// 중간값 찾기
int mid = NumS.length() / 2;
// 횟수 저장 변수 초기화
int m = 0;
// 수의 길이가 2로 나누어지는 경우
if(NumS.length() % 2 == 0){
for(int k = 1; k < mid + 1 ; k++){
if(NumC[mid + k -1] == NumC[mid - k]){
m++;
}
}}
// 수의 길이가 2로 나누어지지 않는 경우
else{
for(int k = 1; k < mid + 1; k++){
if(NumC[mid + k] == NumC[mid - k]){
m++;
}
}
}
// 팰린드롬수 판정 후 결과 출력
if(m == mid){
System.out.println("yes");
}else{
System.out.println("no");
}
// m 다시 초기화
m = 0;
Num = sc.nextInt();
}
sc.close();
}
}
어려웠던 점 : 중간값을 찾을 때, 인덱스의 중간값을 찾아야 하는 데. 수 자체를 2로 나누는 실수를 했다. 전체적으로 어려울 부분이 없는 문제임에도 코드 작성 전에 어느 정도 생각을 하고 들어가지 않고 바로 들어가다 보니 시간을 많이 사용해버렸다.
'프로그래밍 > Java' 카테고리의 다른 글
[자바 JAVA/알고리즘] 백준 10845번 : 큐 (0) | 2022.09.04 |
---|---|
[자바 JAVA/알고리즘] 백준 1236번 : 성 지키기 (0) | 2022.09.03 |
[자바 JAVA/알고리즘] 백준 9012번 : 괄호 (0) | 2022.08.23 |
[자바 JAVA/알고리즘] 백준 1065번 : 한수 (0) | 2022.08.23 |
[자바 JAVA/알고리즘] 백준 10773번 : 제로 (0) | 2022.08.22 |