728x90
https://www.acmicpc.net/problem/11659
<맞은 답>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace baekjoon27433
{
internal class FileName
{
static void Main(string[] args)
{
StringBuilder sb = new StringBuilder();
//첫번째 입력값을 받아 배열로 저장
string[] firstLine = Console.ReadLine().Split(' ');
int totalCount = int.Parse(firstLine[0]);
int howMany = int.Parse(firstLine[1]);
//두번째 입력값을 받아서 배열로 저장
string[] SecondLine = Console.ReadLine().Split(' ');
int[] ints = new int[totalCount];
for (int i = 0; i < totalCount; i++)
{
ints[i] = int.Parse(SecondLine[i]);
}
//합 배열 만들기
int[] sums = new int[totalCount];
for(int i=0; i< totalCount; i++)
{
if (i == 0)
{
sums[i] = ints[0];
}
else
{
sums[i] = sums[i-1] + ints[i];
}
}
for (int i = 0; i < howMany; i++)
{
string[] whatToWhat = Console.ReadLine().Split(' ');
int a = int.Parse(whatToWhat[0]);
int b = int.Parse(whatToWhat[1]);
int sum = 0;
if (a == 1)
{
sum = sums[b - 1];
}
else
{
sum = sums[b - 1] - sums[a - 2];
}
sb.Append(sum + "\n");
}
Console.WriteLine(sb.ToString());
}
public static long Facto(long num)
{
if (num == 0) return 1;
return num * Facto(num - 1);
}
}
}
<처음에 안 된 코드>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace baekjoon27433
{
internal class FileName
{
static void Main(string[] args)
{
StringBuilder sb = new StringBuilder();
string[] firstLine = Console.ReadLine().Split(' ');
int totalCount = int.Parse(firstLine[0]);
int howMany = int.Parse(firstLine[1]);
string[] SecondLine = Console.ReadLine().Split(' ');
int[] ints = new int[totalCount];
for(int i = 0; i < totalCount; i++)
{
ints[i] = int.Parse(SecondLine[i]);
}
for(int i = 0;i < howMany; i++)
{
string[] whatToWhat = Console.ReadLine().Split(' ');
int a= int.Parse(whatToWhat[0]);
int b= int.Parse(whatToWhat[1]);
int sum = 0;
for(int j=a-1; j < b; j++)
{
sum += ints[j];
}
sb.Append(sum+"\n");
}
Console.WriteLine(sb.ToString());
}
public static long Facto(long num)
{
if(num == 0) return 1;
return num*Facto(num - 1);
}
}
}
- 시간초과로 인해 틀렸음
- 이중 for문이 문제인 것 같음
- 이중 for문을 없애기 위해서는, 합 배열을 미리 만들어두고, 꺼내 써야함
728x90
'c# > 백준알고리즘' 카테고리의 다른 글
[c#] 274333번 팩토리얼 2 (0) | 2023.12.11 |
---|---|
[백준 15652번 c#] N과 M (4) (0) | 2022.10.24 |
[백준 18258번 c#] 큐 2 (0) | 2022.10.06 |
[백준 11399번 c#] ATM (2) | 2022.10.06 |
[백준 15649번 c#] N과 M (0) | 2022.10.05 |