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의 값이 달라진다.
'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 |