코딩 테스트/BOJ

C# 11659 구간 합 구하기4

s0002 2023. 1. 17. 16:13

입력 받은 값을 ' ' 기준으로 나누고 int형으로 전환해서 저장하게 만들었다

이 부분이 제일 번거로웠다

백준 사이트에서 시간초과 뜨길래 using, StreamWriter 이용했다

using System;
using System.Collections.Generic;
using System.Linq;
using System.IO;

namespace _11720
{

    class Program
    {
        static void Main()
        {
            using (var sw = new StreamWriter(Console.OpenStandardOutput()))
            {
                string arrNM = Console.ReadLine();
                string[] arrnm = arrNM.Split(' ');
                int N = Convert.ToInt32(arrnm[0]);
                int M = Convert.ToInt32(arrnm[1]);
                int L = N + 1;

                string arrNum = Console.ReadLine();
                string[] arrnum = arrNum.Split(' ');
                int[] arr = new int[L];
                for (int i = 1; i < L; i++)
                {
                    arr[0] = 0;
                    arr[i] = Convert.ToInt32(arrnum[i - 1]);
                }

                int[] sumarr = new int[L];

                // 합배열 만들기
                // sumarr[i] = sumarr[i-1] + arr[i]
                for (int i = 1; i < L; i++)
                {
                    sumarr[0] = 0;
                    sumarr[i] = sumarr[i - 1] + arr[i];
                }

                //for (int i = 0; i < l; i++)
                //{
                //    console.write("{0,2} ", arr[i]);
                //}
                //console.writeline();

                //for (int i = 0; i < l; i++)
                //{
                //   console.write("{0,2} ", sumarr[i]);
                //}
                //console.writeline();

                // 구간합 공식
                // sumarr[i] - sumarr[j-1]
                //i번째 수부터 j번째 수까지 합을 출력한다.
                //Console.WriteLine();

                for (int i = 0; i < M; i++)
                {
                    string jk = Console.ReadLine();
                    string[] JK = jk.Split(' ');
                    int j = Convert.ToInt32(JK[0]);
                    int k = Convert.ToInt32(JK[1]);
                    int sum = sumarr[k] - sumarr[j - 1];

                    sw.WriteLine(sum);
                }
            }
                
        }
    }
}

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

 

11659번: 구간 합 구하기 4

첫째 줄에 수의 개수 N과 합을 구해야 하는 횟수 M이 주어진다. 둘째 줄에는 N개의 수가 주어진다. 수는 1,000보다 작거나 같은 자연수이다. 셋째 줄부터 M개의 줄에는 합을 구해야 하는 구간 i와 j

www.acmicpc.net

 

'코딩 테스트 > BOJ' 카테고리의 다른 글

C# 5585 거스름돈  (0) 2023.01.18
C# 1874 스택 수열  (0) 2023.01.18
C# 11720 숫자의 합  (0) 2023.01.17
C# 10988 팰린드롬  (0) 2023.01.17
C# 1120 문자열  (0) 2023.01.13