아, 어디가 틀렸는 지 알려주시면 감사합니다.
이진으로 해서 푸는 것 같아서 그렇게 하긴 했는데, 아직 어디가 틀린 것인지 잘 모르겠습니다.
으아... 코드 해독에 실패했습니다...ㅠㅠ
몇가지 짚히는 점이 있어서 댓글을 달아보면..
1.
Check check = clocheck;
의도한 바는 check 라는 변수에 clocheck의 값들을 복사한 다음
clocheck 변수의 값들은 유지한 채로 check 변수가지고 놀려고 했을거같은데..
위의 코드를 C로 치자면
Check *check = clocheck;
이렇습니다.
즉! check 에서 변수를 바꾸면 clocheck의 변수값도 변경됩니다!
자바에서는 int나 뭐 이런 기본변수들은 기본적으로 value로 취급되는데
그 의외에 것들은 죄다 reference (포인터)로 취급됩니다.
이 부분을 주의하셔야 될거같네요..
2.
요즘 런타임에러가 WA로 나오고 있는 경향이 있습니다.
Check 변수가 너무 많이 생겨서 메모리부족으로 뒈짓 하는걸 수도 있어요.
3.
기껏 BigInteger 가지고 계산하시는데
sum 이 변수만 혼자 long이네요?
아... 그럼 싹 다 고쳐야 겠네요. 내일 풀어야 겠네. 감사합니다!
여러 자릿수의 숫자까지 고려를 할 경우에(지금은 1자릿수만 고려하게 했지만)는 자릿수를 나타내는 보조배열을 하나 추가해서, 빠지는 자릿수가 최소가 되는 선에서 프로그래밍을 하면 될 것 같네요.
wk12님이 어떻게 풀으셨는지는 모르겠지만, 제 계산에 따르면 어차피 수의 개수가 3개 이상이면 그 어떤 경우에도 해결이 가능하고(3의 배수 찾기), 5개 이상이면 그 어떤 경우에도 수를 제외하지 않거나 1개의 수만 제외하고 3의 배수를 찾을 수 있습니다. 따라서, 빠지는 자릿수만 고려해서 빼는 건 생각보다 어렵지 않게 됩니다.
아! 그렇게 하면 1자리수 외에도 여러 자리의 숫자가 들어와도 풀 수 있겠네요. 자릿수의 길이만 비교하면 돠니까요. 감사합니다. ㅎㅎㅎ