코딩테스트 대비를 위해 도움이 될만한 문제 추천 블로그가 있어서 이 단계대로 코테를 준비합니다.

참조 사이트: http://covenant.tistory.com/224

 

코딩테스트 대비를 위한 백준 문제 추천

코딩테스트 대비를 위한 백준 문제 추천 끝 없는 훈련만이 실전에서 흐트럼없이 정답을 향해서 움직일 수 있습니다. (Photo by Specna Arms on Unsplash) 작년 한 해 수많은 코딩테스트를 직접 경험하고

covenant.tistory.com

Part 1 준비운동 - 쉽게 푸는 문제 (백준 1292)

문제 출처: https://www.acmicpc.net/problem/1292

 

1292번: 쉽게 푸는 문제

첫째 줄에 구간의 시작과 끝을 나타내는 정수 A, B(1 ≤ A ≤ B ≤ 1,000)가 주어진다. 즉, 수열에서 A번째 숫자부터 B번째 숫자까지 합을 구하면 된다.

www.acmicpc.net

풀이

처음에 약간 헷갈렸던 게 a,b가 각각 1,1000일 때 길이가 1000인 배열만으로 충분할까? 였는데 

즉, 1, 22, 333, 4444  -- -- -식으로 가다보면 배열길이 1000이 한참 모잘라서 문제가 될 것 같았지만

되게 멍청한 생각이었던게.. a,b가 1,1000이면 첫번째 부터 1000번째 인덱스 까지만 구하면 되므로 상관이 없습니다.

14행을 주석처리 하고 제출하면 인덱스 범위를 초과할 수 있으므로 fail이 뜰 수 있으니 이것만 조심하면 될 것 같습니다.

코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include<iostream>
using namespace std;
int arr[1001];
int main()
{
    int a, b, sum = 0, k = 0;
    cin >> a >> b;
    int i, j = 0;
    for (i=1; i <=1000; i++)
    {
        for (j=1; j <=i; j++)
        {
            arr[k] = i;
            if (k >= 1000)break;
            k++;
        }
    }
    for (int i=a-1;i<b;i++)
    {
        sum += arr[i];
    }
    cout << sum << endl;
    return 0;
}
cs

 

결과

+ Recent posts