본문 바로가기

cospro2급/cospro_3차

2021-05-16

cospro 2급 8번 문제

TV 애청자 A씨

 

문제 설명

A씨가 하루에 TV를 두 대 이상 트는 시간을 알아내려 한다. A씨는 매일 세 프로그램을 시청한다. 프로그램 방송 시간이 겹칠 때는 TV를 여러 대 켜서 모든 프로그램을 본다.

예를 들어 두 프로그램 방송 시간대가 겹치면 TV를 두 대 켜고, 세 프로그램 방송 시간이 겹치면 TV를 세 대 켭니다.

세 프로그램 방영 시작 시각과 끝 시각이 담긴 2차원 배열 programs와 programs의 세로 길이 programs_len이 매개변수로 주어질 때, 하루에 TV를 2대 이상 트는 총 시간을 return하는 solution 함수를 완성한다.

 

매개변수 설명

3개의 프로그램이 시작되는 시각과 끝나는 시각이 담긴 2차원 배열 programs와 programs의 행 길이 programs_len이 solution 함수의 매개변수로 주어진다.

   programs_len의 값은 항상 3이다.

   programs 배열의 각 원소는 각 프로그램의 방송 시간이 [시작 시각, 끝 시각] 형태로 들어있다.

   프로그램의 시작 시각과 끝 시각은 0 이상 24 이하의 정수이다.

   프로그램의 시작 시각은 끝 시각보다 항상 빠르다.

 

return 값 설명

A씨가 TV를 2대 이상 트는 총 시간을 return 한다.

 

예시

 

예시 설명

2대의 TV를 트는 시간이 2시부터 3시까지, 5시부터 6시까지 총 2시간이고 3대의 TV를 트는 시간이 3시부터 5시까지 총 2시간이다. 따라서  TV를 2대 이상 트는 시간은 총 4시간이다.

 

문제 코드

 

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>

int solution(int programs[][2], int programs_len) {
    int answer = 0;    
    int used_tv[25] = { 0, };  
    
    for(int i = 0; i < programs_len; i++)
        for(int j = programs[i][0]; j < programs[i][1]; j++) 
            used_tv[j]++;
    
    for(int i = 0; i < 25; i++)
        if(used_tv[i] >= 1)
            answer++;

    return answer;
}

int main() {
    int programs[3][2] = {{1, 6}, {3, 5}, {2, 8}};
    int programs_len = 3;
    int ret = solution(programs, programs_len);
    
    printf("solution 함수의 반환 값은 %d 입니다.\n", ret);
}

 

코드 설명

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>

int solution(int programs[][2], int programs_len) {
    int answer = 0;    //TV를 트는 총 시간
    int used_tv[25] = { 0, }; 
    
    for(int i = 0; i < programs_len; i++) //programs_len은 항상 3으로 고정되어 있다.
        for(int j = programs[i][0]; j < programs[1][i]; j++) // [i,0]부터 [1,i]까지
            used_tv[j]++;
    
    for(int i = 0; i < 25; i++)
        if(used_tv[i] >= 1)
            answer++;

    return answer;
}

int main() {
    int programs[3][2] = {{1, 6}, {3, 5}, {2, 8}};
    int programs_len = 3;
    int ret = solution(programs, programs_len);
    
    printf("solution 함수의 반환 값은 %d 입니다.\n", ret);
}

programs_len은 항상 3으로 고정되어 있기 때문에 i는 2차원 배열의 바운더리를 넘어가지 않는다.

겹치는 시간을 찾기 위해 2중 반복문을 돌린다. i의 값에 따라 j의 값이 달라진다.

 

 

 

 

goorm

구름은 클라우드 기술을 이용하여 누구나 코딩을 배우고, 실력을 평가하고, 소프트웨어를 개발할 수 있는 클라우드 소프트웨어 생태계입니다.

www.goorm.io

 

'cospro2급 > cospro_3차' 카테고리의 다른 글

2021-05-16  (0) 2021.05.16
2021-05-15  (0) 2021.05.15
2021-05-15  (0) 2021.05.15
2021-05-14  (0) 2021.05.14
2021-05-13  (0) 2021.05.13