[백준] 11022번 A + B - 8

권태형·2023년 12월 11일

알고리즘

목록 보기
23/33

이전 문제와 거의 동일하고 다른점은 출력해서 연산식 자체를 포함한다는 것이다.

나의 풀이

using System.Text;

StreamReader sr = new(Console.OpenStandardInput());
StringBuilder sb = new();
int n = int.Parse(sr.ReadLine());
        
for(int i = 0; i++ < n;){
    int[] x = Array.ConvertAll(sr.ReadLine().Split(), int.Parse);
    int result = x[0] + x[1];
    sb.AppendLine($"Case #{i}: {x[0]} + {x[1]} = {result}");
}
Console.WriteLine(sb);

이전 문제의 답에서 {x[0]} + {x[1]} = 만 추가해 주었더니 바로 통과 되었다.

바로 배운 Sum()알 사용해 보고자 했지만, 만약 사용하게 되면 연산식의 매개를 하나하나 뽑아서 문자열에 넣기 어려워지기 때문 인것도 있고, 결국 Sum()이 int result = x[0] + x[1];과 다를게 없기때문에 그냥 기존식을 가져다 사용했다.


다른사람 풀이

using static System.Console;int a=int.Parse(ReadLine());
for(int i=0;i<a;i++){
	Write(ReadLine().Split().Aggregate((n,b)=>$"Case #{i+1}: {int.Parse(n)} + {int.Parse(b)} = {int.Parse(n)+int.Parse(b)}\n"));
}

짧은 코드지만 알아보기 힘들었다. 무엇보다 출력을 위한 문자열에 일일히 하나씩 모두 int.Parse()를 사용해 총 4번의 int.Parse를 사용한 부분도 왜 이렇게 써야했나 비록 ReadLine().Split()의 결과가 string[]이기 때문에 그렇다 지만 굳이? 저렇게 써야만 했을까?

또한 Aggregate()함수를 굳이 꼭 사용했어야 했나 라는 생각이 들었다.

linq에서 가져온 함수로 보통 db의 내용을 집계하기 위한 여러가지 메소드를 포함하는 함수로, 위와 같이 메서드 내부에 람다식을 이용해 하나만 작성했을 때는 배열 내 모든 인자를 누적집계하는 방식인데.

예를들면 아래와 같은 방식이다.

double[] doubles = { 1.7, 2.3, 1.9, 4.1, 2.9 };

double product = doubles.Aggregate((runningProduct, nextFactor) => runningProduct * nextFactor);

// product = 88.33080999999999

하지만 이번 문제의 경우에는 누적집계를 하는 형식이 아니라 한줄한줄만 계산해서 출력하는 방식인데 작성자는 왜 이런방식을 채택한걸까?

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

0개의 댓글