해당 문제의 입력에서 N 값은 1000 보다 작거나 같은 자연수라고 명시해둔 만큼 해당 범위내에서
돌아간다면 정답으로 처리해야 옳은 것 같은데, 틀렸다고 명시하는 것은 문제의 N 값의 범위에 오류가 있다고 생각됩니다.
p.s. is_hansu()함수를 조금 변형하여 N < 10000의 경우까지 한수를 제대로 찾아내도록 변경한결과 정답을 받아내었습니다.
N의 값은 1000보다 작거나 같은 이 아닌 10000보다 작거나 같은 일 것으로 생각됩니다.
bool is_hansu(int num) { int a, b, c, d, order = 0;
a = num % 10; b = (num % 100) / 10; c = num / 100; if (num >= 1000) { d = num / 1000; c -= d*10; if ((a-b) == (b-c) == (c-d)) return true; else return false; } else { if ((a - b) == (b - c)) return true; else return false; } }
lazy_ren 7년 전
아래 s 값이 구글링으로 찾은 문제의 답, hansu 값이 직접 코딩한 값입니다.
test 케이스를 3000으로 넣어서 돌렸을시, 1050 부터 값이 달라집니다.
물론 1000초과의 숫자들까지 완벽하게 구해내는게 최적의 알고리즘 이겠지만
해당 문제의 입력에서 N 값은 1000 보다 작거나 같은 자연수라고 명시해둔 만큼 해당 범위내에서
돌아간다면 정답으로 처리해야 옳은 것 같은데, 틀렸다고 명시하는 것은 문제의 N 값의 범위에 오류가 있다고 생각됩니다.
p.s. is_hansu()함수를 조금 변형하여 N < 10000의 경우까지 한수를 제대로 찾아내도록 변경한결과 정답을 받아내었습니다.
N의 값은 1000보다 작거나 같은 이 아닌 10000보다 작거나 같은 일 것으로 생각됩니다.
bool is_hansu(int num)
{
int a, b, c, d, order = 0;
a = num % 10;
b = (num % 100) / 10;
c = num / 100;
if (num >= 1000)
{
d = num / 1000;
c -= d*10;
if ((a-b) == (b-c) == (c-d))
return true;
else
return false;
}
else
{
if ((a - b) == (b - c))
return true;
else return false;
}
}