아하
생활

생활꿀팁

어린알파카245
어린알파카245

코딩 문제 관련 질문입니다.(백준 10952번)

https://www.acmicpc.net/problem/10952

이 링크를 클릭하면 나오는 문제인데요, while 문을 사용해서 정수의 합을 출력하는 문제입니다.

int main(void)

{

int a, b;

while(1)

{

scanf("%d %d", &a, &b);

printf("%d\n", a+b);

if(a == 0 && b == 0)

break;

}

return 0;

}

위의 코드는 는 제가 처음에 짠 코드로 printf가 scanf 바로 밑에 오게 짰습니다. 그런데 틀렸다고 나와서 다른 사람의 답을 참고해 보니 scanf 밑에 if를 먼저 쓰고, if 다음에 printf를 썼더군요. 어떤 차이가 있길래 제 답이 틀린 건가요? 아래의 코드가 정답입니다.

int main(void)

{

int a, b;

while(1)

{

scanf("%d %d", &a, &b);

if(a == 0 && b == 0)

break;

printf("%d\n", a+b);

}

return 0;

}

    55글자 더 채워주세요.
    3개의 답변이 있어요!
    • 고귀한관수리45
      고귀한관수리45

      안녕하세요

      링크따라가서 문제를 보아하니 입력받아야 되는 수가 있고 출력은 어떻게 되어야 한다는게 있네요??

      위가 질문자가 작성 하신거고, 정답은 밑에꺼구요

      어떤부분이 잘못 된건지 잘 모르신다고 하셨는데,

      입력

      1 1 2 3 3 4 9 8 5 2 0 0

      출력

      2 5 7 17 7

      이렇게 되어야 한다고 나와있습니다.

      하지만 질문자는 scanf 밑에 printf 를 하셨는데, 실제 써 보시면 break 하므로써 프로그램이 종료가 되니 뭐가 틀린것인지

      잘 모르실거 같은데요, 0 0 입력한 것이 출력이 안되고 종료되야 맞는 문제 인데 질문자님은 0 0 입력시 0이 출력되고

      종료가 되서 틀린겁니다. break 하기전에 printf를 해버리니 이런 결과가 나옵니다. 그러므로 printf는 break 밑으로 가는게 맞습니다.

      그리고 if문을 쓰실때는 그냥 쓰시기보다는 if(구문){ } 으로 정확하게 코딩 하시는게 좋습니다.

    • 안녕하세요~

      문제를 읽어보니 0 0 이 들어왔을때 끝나는데

      위의 코드 같은경우는 0 0 의 합인 0까지 찍고 끝나네요

      아래의 코드 같은 경우 0 0 이 들어 왔으니 여기서 끝내고

      그러니까 예제 입력이

      1 1 2 3 3 4 9 8 5 2 0 0

      인 경우 위의 코드는

      2 5 7 17 7 0

      으로 끝나네요.

      아래의 코드는

      2 5 7 17 7

      이렇게 끝나고요

    • 위의 코드는 는 제가 처음에 짠 코드로 printf가 scanf 바로 밑에 오게 짰습니다. 그런데 틀렸다고 나와서 다른 사람의 답을 참고해 보니 scanf 밑에 if를 먼저 쓰고, if 다음에 printf를 썼더군요. 어떤 차이가 있길래 제 답이 틀린 건가요? 아래의 코드가 정답입니다.

      ====>

      차이점은 0 , 0 을 입력했을때 의 결과차이입니다

      님이 만드신것은 0 0 도 덧셈 작업후 결과출력하고 작업종료인데

      정답은 0 0 일경우 결과출력안하고 작업을 종료하는것입니다

      그점이 틀린것입니다