문제

N개의 숫자가 공백 없이 쓰여있다. 이 숫자를 모두 합해서 출력하는 프로그램을 작성하시오.

입력

첫째 줄에 숫자의 개수 N (1 ≤ N ≤ 100)이 주어진다. 둘째 줄에 숫자 N개가 공백없이 주어진다.

출력

입력으로 주어진 숫자 N개의 합을 출력한다.

 

두가지 방식으로 풀어보았다. 

1. 예제에 매우 큰수가 들어가기에 string 으로 받을 수를 하나하나 쪼개서 총합을 구함.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
using System;
 
class Program
{
    static void Main(string[] args)
    {
         int iNum = int.Parse(Console.ReadLine());
        string sNum = Console.ReadLine();
        int total = 0;
        for (int i = 0; i < iNum; i++)
        {
          total += int.Parse(sNum[i].ToString());
        }
        Console.WriteLine(total);
    }
}
cs

해당 방식으로 풀이했을 경우 메모리와 시간

2. Linq 를 사용하여 int 배열로 변환 후 sum() 메서드를 사용.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
using System;
using System.Linq;
 
class Program
{
    static void Main(string[] args)
    {
        int iNum = int.Parse(Console.ReadLine());
        string sNum = Console.ReadLine();
        int[] arrNum = new int[iNum];
        arrNum = sNum.Select(n=>int.Parse(n.ToString())).ToArray();
        Console.WriteLine(arrNum.Sum());        
    }
}
cs

 

해당 방식으로 풀이했을 경우 메모리와 시간

 

2번 방식이 Linq로 인해 조금 더 느리고 배열 사용으로 메모리를 더 사용하는 걸로 보인다.

 

https://www.acmicpc.net/problem/11720

 

11720번: 숫자의 합

첫째 줄에 숫자의 개수 N (1 ≤ N ≤ 100)이 주어진다. 둘째 줄에 숫자 N개가 공백없이 주어진다.

www.acmicpc.net

 

 

+ Recent posts