[백준] 25304번 영수증

권태형·2023년 12월 8일

알고리즘

목록 보기
19/33

총액과 총 개수를 받고 개별 금액및 개수의 합과 일치하는지 확인하는 문제이다.
입력값이 많지만, 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 과 같은 단일 알파펫을 변수로 사용해서 가독성이 떨어지는 문제가 있을 것 같다.

profile
22년 12월 개발을 시작한 신입 개발자 ‘권태형’입니다. 포스팅 하나하나 내가 다시보기 위해 쓰는 것이지만, 다른 분들에게도 도움이 되었으면 좋겠습니다. 💯컬러폰트가 잘 안보이실 경우 🌙다크모드를 이용해주세요.😀 지적과 참견은 언제나 환영합니다. 많은 댓글 부탁드립니다.

0개의 댓글