728x90
https://www.acmicpc.net/problem/1259
[문제]
[코드]
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int cnt = 0;
while(true) {
int N = sc.nextInt();
if(N == 0)
break;
String str = Integer.toString(N);
for(int i = 0; i < str.length()/2; i++) {
if(str.charAt(i) != str.charAt(str.length()-i-1))
cnt++;
}
if(cnt == 0)
System.out.println("yes");
else
System.out.println("no");
cnt = 0;
}
sc.close();
}
}
[설명]
1. 0이 주어지면 프로그램을 종료한다는 것을 보면 while문을 사용하는 것이 좋다고 생각할 수 있다.
2. while문이 무한으로 돌아가면서 정수형 N에 입력을 계속 받는다.
3. 입력 받은 N이 0이면 프로그램을 종료해야하기때문에 if문을 통해 조건을 걸어준다.
4. 입력받은 수의 자리수를 서로 비교하려면 정수형 N을 문자열로 변환 후 한 글자씩 비교해야 한다.
5. 정수형을 문자열로 변환하기 위해 Integer.toString(N)을 사용하여 문자열 변수 str에 넣어준다.
6. 문자열로 바뀐 수를 서로 비교해야한다. 만약 처음에 12321이라는 수를 입력 했다면
0번째 | str의 길이-1번째 : 4번째 |
0번째와 4번째 비교 : 1과 1 비교 |
1번째 | str의 길이-2번째 : 3번째 |
1번째와 3번째 비교 : 2와 2 비교 |
7. 이런 식으로 비교하기 위해 for문을 돌려주는데 0번째부터 str 길이/2번째까지만 반복문을 돌려준다.
8. 만약 0번째와 4번째의 값이 같지 않다면 cnt을 증가시켜준다. 같다면 증가하지 않고 0의 값을 계속 유지할 것이다.
9. for문을 빠져나왔을 때 cnt의 값이 0이라면 팰린드롬수를 만족하기때문에 yes를 출력해 주고 아니면 no를 출력해 준다.
10. 다음 N를 입력받아 비교하기 위해 cnt의 값을 다시 0으로 초기화 해준다.
[결과]
728x90