입력 코드
#include <stdio.h>
int main(void)
{
int num;
while (1)
{
scanf("%d", &num);
if (num == 0)
return 0;
int reverse_num = 0;
int temp = num;
while (num > 0)
{
reverse_num *= 10;
reverse_num += (num % 10);
num /= 10;
}
if (temp == reverse_num)
printf("yes\n");
else
printf("no\n");
}
return 0;
}
코드 설명
배열 / 수 뒤집기를 이용하는 문제
#include <stdio.h>
#include <string.h>
main() {
int i,j;
char s[100000];
scanf("%s", s);
int l = strlen(s);
int m = l / 2;
if((l%2)==0)
for (j = 0; j < m; j++) {
if (s[m - j] == s[m + j])
printf("yes\n");
else
printf("no\n");
}
else
for (j = 0; j < m; j++) {
if (s[m - j-1] == s[m + j])
printf("yes\n");
else
printf("no\n");
}
}
처음에는 문자열 길이가 짝수일때와 홀수일때 경우를 나눠서 문자열의 가운데를 기준으로 비교했다. 그런데 반복문을 돌면서 전체적으로 조건문을 만족하면 yes/no를 출력하는 게 아니라 비교할때마다 출력하도록 작성한 것이었다.
2021/01/04 - [C] - #8. [백준_C언어] 2920번 : 음계
이 문제랑 약간 비슷한 것 같았다.
#include <stdio.h>
#include <string.h>
main() {
int i,j,p;
char s[100000];
scanf("%s", s);
int l = strlen(s);
int m = l / 2;
if((l%2)==0)
for (j = 0; j < m; j++) {
if (s[m - j] == s[m + j])
p = 1;
else
p = 2;
}
else
for (j = 0; j < m; j++) {
if (s[m - j - 1] == s[m + j])
p = 1;
else
p = 2;
}
if (p == 1)
printf("yes\n");
else if (p == 2)
printf("no\n");
}
그래서 새로운 변수를 설정하고 다시 반복문을 작성했는데도 결과가 제대로 출력되지 않았다. 그리고 0으로 입력이 끝나는 게 아니라 한 번밖에 입력하지 못했다.
시간 초과로 찾아봤더니 수 뒤집기를 활용해서 풀 수도 있는 문제였다.
↓↓↓ 참고한 사이트
[백준(BOJ)] 1259번 팰린드롬수, C언어 풀이
<팰린드롬수>, 1259번 문제 어떤 단어를 뒤에서부터 읽어도 똑같다면 그 단어를 팰린드롬이라고 한다. 'radar', 'sees'는 팰린드롬이다. 수도 팰린드롬으로 취급할 수 있다. 수의 숫자들을 뒤에서부터
karen0117.tistory.com
↑↑↑ 이건 내가 원래 하려던 방법
velog.io/@yujo/BOJ-1259-%ED%8C%B0%EB%A6%B0%EB%93%9C%EB%A1%AC%EC%88%98
[C/C++]BOJ #1259 팰린드롬수
input으로 들어오는 숫자가 크지 않으므로(1 ~ 99999) 들어오는 숫자를 뒤집어서 reverse_num에 담아주고 reverse_num에 담긴 숫자가 input으로 들어온 숫자와 일치하는지 판별 후 "Yes" 또는 "No"를 반환하도
velog.io
blog.naver.com/tipsware/221287499666
[Quiz] 정숫값을 거꾸로 출력하기
: C 언어 관련 전체 목차 http://blog.naver.com/tipsware/221010831969 1. 문제 아래의 예제에서 비어있...
blog.naver.com
문제 출처
1259번: 팰린드롬수
입력은 여러 개의 테스트 케이스로 이루어져 있으며, 각 줄마다 1 이상 99999 이하의 정수가 주어진다. 입력의 마지막 줄에는 0이 주어지며, 이 줄은 문제에 포함되지 않는다.
www.acmicpc.net
'C' 카테고리의 다른 글
#20. [백준_C언어] 10250 : ACM 호텔 (0) | 2021.01.08 |
---|---|
#19. [백준_C언어] 2798 : 블랙잭 (0) | 2021.01.08 |
#17. [백준_C언어] 1085 : 직사각형에서 탈출 (0) | 2021.01.07 |
#16. [백준_C언어] 11720 : 숫자의 합 (0) | 2021.01.06 |
#15. [백준_C언어] 11654번 : 아스키 코드 (0) | 2021.01.06 |