5988번 - 홀수일까 짝수일까
이문제는 테스트케이스의 수가 N으로 정해져있기때문에 다른곳에서 틀릴게없다고생각했는데 당황스럽네요..도와주세요!
K의 크기를 참고하세요.
입력되는 수의 제한을 보시면 최대 61자리 수입니다. 당연히 int로는 저장이 안 됩니다.
unsigned long long으로 선언하고 예외처리했는데도 왜오류가뜰까요?!
unsigned long long 자료형은 최대 2^64인
까지 저장할 수 있습니다. 최대로 따지면 19자리까지겠네요.
문자열로 처리하면 쉽게 해결이 가능합니다..
2^64 - 1 이에요 순간 잘못생각했네요
제가혼자 어렵게푼건지모르겠는데..
전체케이스를 한번에 받아야한다고생각해서 char 더블포인터로 char*의 개수를 동적할당하였고 각 자리수는 61까지만들어놓았습니다 그리고 마지막 61번째인덱스인 [60]에
널문자를 넣어놓았으며 60자리 이상입력하면 널문자가 사라지므로 이것으로 구별하게했네요 혹시 틀린부분 있으면 지적해주세요 ㅠㅠ
24번째 줄에 문제가있네요 int로 저장이 안되는 큰 수 때문에 문자열로 입력을 받았는데 다시 int형으로 바꾸시네요..
홀수와 짝수를 구분하시려면 일의자리만 확인하면 됩니다
우선 감사합니다 덕분에 풀수있었습니다!
그런데 제가 너무이상하게 돌려서푼건아닌지 그런생각이드네요
전 문제를 보고 입력을 한번에 다받아야한다고생각해서 char** 를이용해 char*를 동적할당했구요
이렇게 만들어진 문자열의 끝이 몇번째 인덱스인지 알기위해서 int* 를 이용해 또 동적할당해서 카운트를 하나씩 셌어요..
뭔가 비효율적인 프로그래밍을 하는 느낌이라서 자신감이안들기도하네요 어떻게생각하시나요?
정답을 받고 나면 채점 현황에서 다른 사람들이 공개한 코드를 볼 수 있으니, 읽어보면 도움이 될 것들이 있을 것입니다.
제가 문제 해결에 사용한 다음 코드를 보고 어떻게 단순화할 수 있는지 생각해 보세요.
도움주셔서 감사합니다~
혹시
if ((k[strlen(k) - 1] - '0') % 2) 이부분에서 마지막 일의자리를 가져오는것은 이해가되는데 - '0'은 어떤걸의미하는지 알수있을까요?
문자열로 입력받은 숫자들은 정수로 입력받은 것과는 달리 '숫자 문자'입니다. 아스키 코드에 대해 알아보시면 될 것 같습니다.
댓글을 작성하려면 로그인해야 합니다.
neity16 5년 전
이문제는 테스트케이스의 수가 N으로 정해져있기때문에 다른곳에서 틀릴게없다고생각했는데 당황스럽네요..도와주세요!