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

 

2563번: 색종이

첫째 줄에 색종이의 수가 주어진다. 이어 둘째 줄부터 한 줄에 하나씩 색종이를 붙인 위치가 주어진다. 색종이를 붙인 위치는 두 개의 자연수로 주어지는데 첫 번째 자연수는 색종이의 왼쪽 변

www.acmicpc.net

 

맞은 코드

다른 사람 풀이 보고 풀었다 어려워따

for문 사용을 줄여야겠다

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>  

int main()
{
    int a[100][100] = {0,}; // 색종이 붙여지지 않은 부분 0으로 초기화
    int i, k, q; // 반복
    int n; // 색종이 개수
    int x, y; // 색종이 왼쪽 아래 점 좌표
    int cnt = 0; // 색종이 넓이 (1이면 색종이 붙여져있음)
    scanf("%d", &n);
    
    for(i=0; i<n; i++){
        scanf("%d %d", &x, &y);
        for(k=x; k<x+10; k++){
            for(q=y; q<y+10; q++){
                if(a[k][q]==1) continue;
                a[k][q] = 1;
                cnt++;
            }
        }
    }
    
    
    printf("%d", cnt);
    return 0;
}

 

 

시간초과 코드

#include <stdio.h>

int main()
{
    int a[100][100] = {0,}; // 색종이 붙여지지 않은 부분 0으로 초기화
    int i, k, q; // 반복
    int n; // 색종이 개수
    int x, y; // 색종이 왼쪽 아래 점 좌표
    int cnt = 0; // 색종이 넓이 (1이면 색종이 붙여져있음)
    scanf("%d", &n);
    
    for(i=0; i<n; i++){
        scanf("%d %d", &x, &y);
        for(k=0; k<10; k++){
            for(q=0; q<10; q++){
                a[x+k][y+q] = 1;
            }
        }
    }
    
    for(i=0; i<100; i++){
        for(k=0; i<100; k++){
            if(a[i][k] == 1) cnt++;
        }
    }
    
    printf("%d", cnt);
    return 0;
}

+ Recent posts