이번 문제도 간단하다.
영수증의 "합계" 부분에 적힌 금액과 실제 물건들의 가격과 개수에 의한 합이
같은지를 판별하여 "Yes"나 "No"를 출력하면 성공하는 문제이다.
이 사진을 보면 어떤식으로 문제를 풀어야할 지 알 수 있다.
처음 2줄은 미리 읽어서 특정 변수에 저장해두고,
두번째 변수는 for문을 돌릴때 몇번 돌릴지로 사용한다.
이후 for문이 한번 돌 때마다 한줄씩 읽어서
가격을 계산한 후, 더해서 비교하면 될 것 같다.
using System;
namespace unicoti {
class Program {
static void Main(string[] args) {
int total = 0;
int totalPrice = 0;
int caseCount = 0;
int.TryParse(Console.ReadLine(), out total);
int.TryParse(Console.ReadLine(), out caseCount);
for(int i = 0; i < caseCount; i++) {
int price, count;
string[] caseArr = (Console.ReadLine() ?? "").Split(' ');
int.TryParse(caseArr[0], out price);
int.TryParse(caseArr[1], out count);
int caseTotal = price*count;
totalPrice += caseTotal;
}
Console.WriteLine(totalPrice == total ? "Yes" : "No");
}
}
}
그래서 처음 2줄을 읽을 변수와, 더한 값을 저장할 변수 총 3개를 미리 설정했다.
처음 2줄을 읽어서 영수증의 "합계" 부분은 total이라는 변수에 저장했고,
for문을 몇번 돌릴지 정한 항목의 개수는 caseCount라는 변수에 저장했다.
이후 int.TryParse를 통해서 안전하게 정수형 변수로 파싱해주었다.
이제 for문이다. caseCount를 통해서 몇번 돌릴지를 정해주었고,
price와 count라는 변수를 세웠다. null 때문에 ?? 연산자를 사용했고 문자열 배열로 저장했다.
이후 배열의 각 요소를 파싱해주어 price와 count에 저장했다.
그럼 그 항목의 금액은 가격x개수로 결정되기에 그렇게 계산해서
caseTotal이라는 변수를 만들어 넣었고,
https://alpaca-code.tistory.com/237 (??)
마지막으로 totalPrice에 더해주었다.
이 과정이 항목마다 반복되기에 결과적으로 영수증에 적힌 모든 항목의
가격을 계산할 수 있었다.
이제 마지막으로 가격이 맞냐 아니냐에 따라서 Yes나 No를 출력해야 한다.
삼항연산자를 통해서 한줄로 처리해주었다.
이게 아니라면 if문과 새로운 변수를 사용하면 된다.
https://alpaca-code.tistory.com/29 (삼항연산자)
오늘의 느낀점)
그동안 가끔씩 클로저 문제가 없을 것 같은데도 클로저 문제가 생겼던 적이 있다.
클로저를 알고 있기에 왜 그런지 항상 의문이였는데, 이 문제를 통해서 의문이 풀렸다.
유니티에서는 MonoBehavior 클래스가 알아서 변수값을 0으로 초기화해준다고 한다.
그래서 초기화를 안해도 null이 아닌값으로 처리되어 오류가 없었는데,
원래 유니티 개발자인 나는 원래 그런줄 알고 그냥 사용해서 그랬던 것이였다.
유니티가 언리얼 보다 쉬운 이유를 계속해서 알게되는 것 같다.
확실히 기초부터 시작하니까 유니티가 깔아준 판에 대해서 더욱 자세히
알게 되는 것 같다. C#이 쉽다고 생각했는데 어느정도 맞는 말이지만
MonoBehavior를 상속받은 C#이 쉽다가 더 맞는 말 같다.
이상으로 도움이 되었길 바라며,
끝.
'코딩테스트 (C#)' 카테고리의 다른 글
백준 15552 : 빠른 A+B - C# 풀이 (0) | 2024.08.27 |
---|---|
백준 25314 : 코딩은 체육과목 입니다 - C# 풀이 (0) | 2024.08.27 |
백준 8393 : 합 - C# 풀이 (0) | 2024.08.22 |
백준 10950 : A+B - 3, C# 풀이 (0) | 2024.08.21 |
백준 2739 : 구구단 - C# 풀이 (0) | 2024.08.21 |
댓글