728x90
반응형
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AXO72aaqPrcDFAXS
#include<cstdio>
#include<cmath>
typedef long long ll;
using namespace std;
int check_pal(int num)//맞으면 1, 아니면 0리턴
{
if( num / 10 == 0)
return 1;
else if(num / 10 < 10)
{
if(num % 10 == num / 10)
return 1;
}else{
if(num / 100 == num % 10)
return 1;
}
return 0;
}
int main(void)
{
int size;
int s,e;
int cnt;
double sq;
scanf("%d",&size);
for(int i = 0; i < size; i++)
{
scanf("%d %d",&s,&e);
cnt = 0;
for(int i = s; i <= e; i++)
{
if(check_pal(i)){
sq = sqrt(i);
if(sq - (int)sq == 0){ //정수면
if(check_pal(sq)) {
cnt++;
}
}
}
}
printf("#%d %d\n",i+1,cnt);
}
return 0;
}
왜 올렸는가?
저번에 다트게임때 바로 생각 못했던 정수인가? 를 체크하는걸 이용했기 때문이다.
지난번에 한 경험으로 보자마자 떠올려서 샥샥샥 풀었다.
A가 팰린드롬인가 체크.
팰린드롬이면 sqrt(A)가 정수인가? 체크
sqrt(A)가 정수면 팰린드롬인가? 체크
맞으면 cnt++
숫자가 커질경우 어떻게 할것인가? 생각해봤는데..
1000,10000의 자리의 경우
맨앞 맨뒤, 그다음앞 그다음뒤 만 체크하면 되고
100000, 1000000의 경우도
비교하는게 1개씩만 더 늘기때문에
이것만 변수화 해주면 될 듯 하다.
===END====
728x90
반응형
'컴퓨터 > 알고리즘' 카테고리의 다른 글
[SWEA] 9700. USB 꽂기의 미스터리 (문제 꼼꼼히 읽어야하는 이유) (0) | 2021.02.20 |
---|---|
[SWEA] 10726. 이진수 표현 (비트마스크),연산자 우선순위 (0) | 2021.02.17 |
[SWEA] 11387. 몬스터 사냥 (float대신 double을 써야하는 이유) (0) | 2021.02.15 |
[BOJ] 2839. 설탕배달 (0) | 2021.02.10 |
[SWEA] 10761. 신뢰(로봇 버튼누르기) (4) | 2021.02.09 |