아하
검색 이미지
생활꿀팁 이미지
생활꿀팁생활
생활꿀팁 이미지
생활꿀팁생활
어린알파카245
어린알파카24521.03.07

코딩 문제 관련 질문입니다.(백준 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개의 답변이 있어요!
  • 안녕하세요

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

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

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

    입력

    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 일경우 결과출력안하고 작업을 종료하는것입니다

    그점이 틀린것입니다