TV 애청자 A 씨
문제 설명
하루에 TV 두 대 이상 트는 시간을 알아내려 합니다. A 씨는 매일 세 프로그램을 시청합니다. 프로그램 방송 시간이 겹칠 때는 TV를 여러 대 켜서 모든 프로그램을 봅니다.
세 프로그램 방영 시작 시각과 끝 시각이 담긴 2차원 배열 programs와 programs의 세로 길이 programs_len이 매개변수로 주어질 때, 하루에 TV를 2대 이상 트는 총시간을 return 하도록 solution 함수를 작성했습니다.
그러나, 코드 일부분이 잘못되어있기 때문에 올바르게 동작하지 않으므로 한 줄만 변경해서 올바르게 동작하도록 수정하세요.
예시
programs | programs_len | return |
{{1, 6}, {3, 5}, {2, 8}} | 3 | 4 |
수정해야 할 코드
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;
}
수정
if(used_tv[i] >= 1) → if(used_tv[i] >= 2) |
used_tv 배열에는 N시간에 TV를 몇 개를 틀었는지를 담은 배열로,
구하려는 것은 TV 2대를 트는 총 시간을 구하려는 것이다.
수정 전 코드에서는 1대를 트는 총 시간을 구하는 조건으로 되어있다.
코드 해석 및 전체 코드
answer ) TV 2대 이상 트는 총 시간을 return 할 변수
used_tv[25] ) n시에 TV 몇 대를 틀었는지 담을 배열 ( 프로그램 시작 시각과 끝 시각은 0 ~ 24이다. )
중첩 for문 )
i : 0 ~ progrmas_len - 1까지 반복한다.
j : progrmas[i][0] ~ programs[i][1] - 1까지 반복하여 usted_tv[j]에 1 증가한다.
( progrmas[i][1]은 프로그램 종료 시각이므로 TV 시청 시각에 포함시키지 않는다. )
i | j | used_tv[j]++ |
0 | 1 ~ 5(6 -1) | used_tv[1, 2, 3, 4, 5]++ |
1 | 3 ~ 4 | used_tv[3, 4]++ |
2 | 2 ~ 7 | used_tv[2, 3, 4, 5, 6]++ |
따라서 used_tv는 [0, 1, 2, 3, 3, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]이다.
for문 ) 0 ~ 25 - 1까지 반복한다.
if in for ) used_tv[i]가 2 이상이면 answer를 1 증가한다.
usted_tv 배열에 2 이상인 요소는 2, 3, 4, 5 4개 이므로 answer는 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] >= 2)
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);
}
구름 goormedu COS PRO 2급 기출문제 - C언어
[3차] 문제8) TV 애청자 A씨
'코딩 테스트 > [c언어] cos pro 2급 기출문제' 카테고리의 다른 글
[No.30] 내 절반이 여기에 있는가? / cos pro 2급 c언어 기출 문제 (0) | 2021.05.17 |
---|---|
[No.29] 주차장에 몇 대가 들어올 수 있는 거야? / cos pro 2급 c언어 기출 문제 (0) | 2021.05.17 |
[No.27] 남은 재료로 주스 만들기 / cos pro 2급 c언어 기출 문제 (0) | 2021.05.16 |
[No.26] 타일 색칠 방법 구하기 / cos pro 2급 c언어 기출 문제 (2) | 2021.05.15 |
[No.25] 여행객의 총 교통비 구하기 / cos pro 2급 c언어 기출 문제 (0) | 2021.05.15 |
댓글