본문 바로가기

문제풀이

백준 25304번 반복문 기초문제 영수증

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>

verInput1(int a, int b) {
	if (!(a >= 1) && (a <= 1000000000) && (b >= 1) && (b <= 100)) {
		printf("잘못된 입력입니다. 프로그램을 종료합니다.");
		return 1;
	}		
	return 0;
}
verInput2(int c, int d) {
	if(!(c >= 1) && (c <= 1000000) && (d >= 1) && (d <= 10)){
		printf("잘못된 입력입니다. 프로그램을 종료합니다.");
		return 1;
	}
	return 0;	
}
//
int main() {
	int x, n;
	int arr1[100];
	int arr2[100];
	int sum = 0;
	scanf("%d", &x);
	scanf("%d", &n);
	if (verInput1(x, n)) {
		return;
	}

	
	for (int i = 0; i < n; i++) {
		scanf("%d %d", &arr1[i], &arr2[i]);
		if (verInput2(arr1[i], arr2[i])) {
			return;
		}
		sum = sum + (arr1[i] * arr2[i]);
	}

	if (x == sum) {
		printf("Yes");
	}
	else {
		printf("No");
	}

}

논리 연산자의 나열에 ! 하나만 붙여도 부정문이 되는걸 알게 됐네요.

기존에는 if(1 != (논리연산문)) 이런식으로 만들던 버릇이 있었는데요. 이번기회에 더 쉽게 만들게 되었습니다.

가독성이 떨어지던 기존 코드

 

간단하게 표현할 수 있는 방법을 알게 되어 좋았습니다.

 

나머지는 크게 어렵지 않았네요. 혹시 반복문 밖에서도 계산이 가능하도록 배열(어차피 100개까지 제한이라 100개 크기로 선언)에 자료를 담았습니다.

정작 계산은 반복문 안쪽에 sum이라는 변수에 값을 누적시켜가면서 했고요. 마지막에 if문을 사용해서 Yes or No를 출력 하면서 마무리 되었습니다.