요즘 acm icpc 문제 풀이에 재미를 붙여 하루에 한두개씩 풀곤하는데 오늘 어이없는 것으로 한 20여 차례의 wrong answer를 만나야 했다. 문제는 너무나 간단해서 정답이 아닐리가 없고… 다 확인을 해 보았는데두 계속 wrong answer만 나오는 것이었다. 그 정답과 오답의 차이는 아래 루프에 있었다. 참고로 아래와 같은 루프는 주로 출력할것의 갯수를 잘라서 출력하는데 많이 사용되는 구조이다.
// 루프1
for(i=0; i<n; ++i)
{
printf("%3d", i);
if((i+1) % 15 == 0)
putchar('\n');
}
// 루프2
for(i=0; i<n; ++i)
{
if((i+1) % 16 == 0)
putchar('\n');
printf("%3d", i);
}
원 문제의 요구는 15개씩 끊어서 출력하는 것이었다. 내가 작성한 루프는 1번구조였고 2번 구조가 정답의 루프 구조이다. 둘간의 차이를 금방 알수 있는 분은 충분히 코드를 머릿속으로 그릴수 있는 사람들이다. 나 또한 둘간의 차이를 구분하지 못해서 수십번의 오류를 가진 답을 제출해야 했다. 눈에 들어오지않는 사람들은 한번 쯤 곰곰히 생각해 보길 바란다. 둘간의 차이가 무엇일까??
15개씩 끊어주는 건 둘 다 같은데…
한 가지 다르다면 15n-1의 경우 첫번째는 리턴값이 포함된다는 것 정도?
by 인터넷 논객