
총액과 총 개수를 받고 개별 금액및 개수의 합과 일치하는지 확인하는 문제이다.
입력값이 많지만, 3번째줄부터 입력값의 형태가 동일해 지기때문에 3번째 줄부터 해당되는 부분에 반복문을 사용하면 된다.
또한 각 결과값이 맞냐 틀리냐에 따라서 출력이 달라지기 때문에 조건문을 통해서 결과가 다르게 나올 수 있도록 해줘야한다.
총액의 최대 금액이 10억임에 따라서, int형 변수가 표현할 수 있는 최대수 21억 4748만 이하이므로 그대로 int정수형을 사용해도 무방하다.
int totalPrice = int.Parse(Console.ReadLine());
int totalCount = int.Parse(Console.ReadLine());
int sumPrice = 0;
for(int i = 0; i < totalCount; i++){
int[] receipt = Array.ConvertAll(Console.ReadLine().Split(), int.Parse);
sumPrice += receipt[0] * receipt[1];
}
Console.WriteLine(totalPrice == sumPrice ? "Yes" : "No");
using static System.Console;
int p=int.Parse(ReadLine()),n=int.Parse(ReadLine());
for(int i=0; i<n; i++){int[]t=Array.ConvertAll(ReadLine().Split(),int.Parse);
p-=t[0]*t[1];}Write(p==0?"Yes":"No");
Console을 시스템으로 직접 using해서 ReadLine()이나 Write()를 사용할때 적지 않도록 하고, 토탈과, 합계를 비교할 때 ==동등 연산을 바로 실행하는 것이 아니라 토탈에서 개별금액을 다 빼서 같아진다면 0이 될 것이기 때문에 위와같이 작성한 것같다.
실질적인 논리적로직은 큰 차이가 없는 풀이 방식이었으나, 코드 길이를 1.5배 줄일 수 있는 방법이었다. 그래도 p, n 과 같은 단일 알파펫을 변수로 사용해서 가독성이 떨어지는 문제가 있을 것 같다.