미국산 귤

[🌱C99] 백준 10952번 풀이 - 사칙연산 반복문 본문

C

[🌱C99] 백준 10952번 풀이 - 사칙연산 반복문

migyul 2024. 9. 11. 21:47

두 정수 A, B를 입력하면 합을 출력하는 프로그램
다만 0 0 을 입력할 경우 반복문이 멈춰야 한다.
 
 
반복문을 몇 번 실행시킬지도 미지수니 for문을 사용할 수도 없고,
A, B 값이 초기화가 안 되어 있어 while문도 어떻게 사용할지 막막했다.
 
 
 

해결

반복문의 조건을 while(1)로 설정해두면 break문을 만날 때까지 무한 루프가 실행된다.
A, B를 입력 받고 if문을 이용해 조건에 따라 다른 결과가 되도록 설정하면 된다.
 
 
 
<while문 전체 코드>

#include <stdio.h>

int main (void){
    
    int A;
    int B;
    
    // break문에 도달하지 않는 이상 무한 루프
    while(1){
        scanf("%d %d", &A, &B);
        
        // 0 0 이 입력되면 루프를 빠져나옴
        if(A == 0 && B == 0){
            break;
        }else{
            printf("%d\n", A + B);
        }

        
    }
    
    return 0;
}

 
 
 
 
-> 맨 처음에는 무조건 실행이 돼야 한다? : do-while문이 떠올랐다.
 
do-while문은 조건에 관계없이 1회는 무조건 실행되기 때문이다.
그래서 do-while문으로도 코드를 짜보았다.
 
근데 짜고보니.. 맨처음에 0 0 이 입력될 경우도 있기 때문에
do-while로 짜면 더 복잡해지는 것 같다.
굳이 반복문 안에다가 조건문을 한 번 더 써야 하기 때문이다..
그냥 while(1) 방법을 쓰는 게 훨씬 나은 것 같다.
 
 
 
<do-while문 전체 코드>

#include <stdio.h>

int main(void) {
    int A, B;

    do {
        scanf("%d %d", &A, &B);
		
        // 비효율...
        if(A==0&&B==0){
        	break;
        }
        
        printf("%d\n", A + B);
    } while (A != 0 || B != 0);

    return 0;
}

 
 
 
문제 출처 : 백준 10952번
https://www.acmicpc.net/problem/10952

 
 
 

🔥한줄평
while(1)을 이용해 무한 루프를 만드는 방법 기억하자