using System;
namespace codingstudy
{
class Program
{
static void Main()
{
// 영수증에 적힌 총 금액 입력
int total = int.Parse(Console.ReadLine());
// 영수증에 적힌 구매한 물건의 종류의 수 N
int n = int.Parse(Console.ReadLine());
// 금액 맞는 지 비교할 int
int comp = 0;
// n만큼 개수와 가격을 입력할 수 있도록 작성
for (int i=0; i< n; i++)
{
// 개수와 가격 입력
int[] pro = Array.ConvertAll(Console.ReadLine().Split(),int.Parse);
// 계산
comp += pro[0] * pro[1];
}
// 개수와 가격이 일치하면 Yes, 않으면 No
if (total == comp)
{
Console.WriteLine("Yes");
}
else
{
Console.WriteLine("No");
}
}
}
}
문법을 아직 잘 몰라 이틀 고민하다 결국 답을 봐버리고 풀었다.
그래서 실패 요인을 적으며 다시 공부해보려고 한다.
1. string으로 이차원 배열을 선언했음
- 공백 Split 나눠야하니까 string으로 하고 나중에 int.Parse로 바꿔주어야 한다고 생각했음
- [개수,물건] 으로 저장된다고 생각해서 string[,] 이차원 배열로 선언함;
2. 계산 식을 저장할 변수 안 만들었음
- if문에 계산식 때려 박았는데.. 다른 코드를 보니까 계산식을 저장할 변수를 만드는게 당연히 깔끔했다
- 그리고 for문에 넣을 생각도 못함 ㄱ-;; 이러니까 한 줄에 하나씩 계산 된 값이 나왔지...
3. Array.ConvertAll을 쓸 생각 못함(애초에 몰랐다ㅠ 그래서 int.Parse는 앞에만 오는 줄..)
- 배열 형식 변환할 때 매우 유용하다고 한다..
Array.ConvertAll( 변환할 배열, 변환할 형식 )
이는 주로 다음과 같은 방식으로 사용된다.
string[] s = Console.ReadLine().Split();
int[] score = Array.ConvertAll(s, int.Parse);
이렇게 작성을 하게되면
사용자가 입력한 내용을 공백을 기준으로 잘라서 string배열에 저장하고
이 배열을 모두 int형태로 바꿔서 다시 새로운 배열에 저장하게 된다.
이제 매번 형식변환할 필요없이 간단하게 끝낼 수 있다.
(출처 : 오늘코딩 블로그 https://coding-of-today.tistory.com/105)
'C# > C# (백준)' 카테고리의 다른 글
[C#] 백준 알고리즘 11021번, A+B - 7 (0) | 2023.01.11 |
---|---|
[C#] 백준 알고리즘 15552번, 빠른 A+B (0) | 2023.01.09 |
[C#] 백준 알고리즘 1526번, 평균 (0) | 2022.08.22 |
[C#] 백준 알고리즘 3052번, 나머지 (0) | 2022.08.11 |
[C#] 백준 알고리즘 2562번, 최댓값 (0) | 2022.08.11 |