본문 바로가기

백준

16396)선 그리기

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


선분의 시작점과 끝점을 입력으로 받는다.


요것을 그대로 일차원 배열에 넣으면 된다.


예를들어 1 10은 1부터10까지 선분을 말하는데


일차원 1~9까지 각 방을 TRUE로 바꿔주면 된다.


총 길이는 10000을 넘지 않으므로 미리 10000개의 방을 잡아놓고


입력에서 최소 시작점과 최대 끝점을 찾아서


최소 시작점부터 최대 끝점까지 TRUE인 것의 수를 세면 된다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include<stdio.h>
#define MAX(A,B) (A>B)?A:B
#define MIN(A,B) (A<B)?A:B
 
typedef enum _BOOL {
    TRUE = 1, FALSE = 0
}BOOL;
 
int main() {
    int n;
    int p, q;
    int first = 10000,last = 0;
    int length = 0;
    BOOL A[10000= {FALSE};
 
    scanf("%d",&n);
    for (int i = 0; i < n;i++) {
        scanf("%d %d",&p,&q);
        for (int j = p; j < q;j++) {
            A[j] = TRUE;
        }
        
        first = MIN(first,p);
        last = MAX(last,q);
    }
 
    for (int i = first; i < last;i++) {
        if (A[i]) length++;
    }
    printf("%d\n",length);
 
    return 0;
}
cs


'백준' 카테고리의 다른 글

10757)큰 수 A+B  (0) 2019.02.19
15501)부당한 퍼즐  (0) 2019.02.18
14891)톱니바퀴  (0) 2019.02.16
2583)영역 구하기  (0) 2019.02.16
10158)개미  (0) 2019.02.14