본문 바로가기
Cospro 2급/C언어

[6차] 문제1. 저는 따뜻한 날이 좋아요. 답안 및 풀이

by SRin23 2021. 5. 30.

◇ 문제 설명

n일 동안 매일매일의 푱균 기온이 수서대로 들어있는 배열이 있습니다. 이때, A번째 일과 B번째 일 사이에서 A, B번째 일보다 기온이 높았던 날은 총 며치이었는지 구하려 합니다.
n일동안 매일매일의 평균 기온이 순서대로 들은 배열 temperature, temperature의 길이 temperature_len, 두 날짜를 나타내는 자연수 A, B가 매개변수로 주어질때, A번째 일과 B번째 일 사이에서 두 날짜보다 기온이 높았던 날은 총 며칠인지 return하도록 solution함수를 작성해주세요.

 

◇ 매개변수 설명

n일동안 매일매일의 평균 기온이 순서대로 들은 배열 temperature, temperature의 길이 temperature_len, 두날짜를 나타내는 자연수 A, B가 solution함수의 매개변수로 주어집니다.
 ▶ temperature의 원소는 -30이상 50이하인 정수입니다.
 ▶ temperature_len은 3이상 30이하입니다.
 ▶ 날짜는 0번째 일부터 시작합니다.
 ▶ 즉 temperature의 첫번째 원소는 0번째 날, 두번째 원소는 1번째 날 ...을 의미합니다.
 ▶ A, B는 날짜를 나타내는 정수이며, 0이상 (temperature의 길이 -1)이하 입니다.
 ▶ A는 B보다 항상 작습니다.

 

◇ return값 설명

A번째 일과 B번째 일 사이에서 두 날짜보다 기온이 높았던 날은 총 며칠인지 return해주세요.

 

◇ 예시

temperature temperature_len A B return
[3, 2, 1, 5, 4, 3, 3, 2] 8 1 6 2

 

◇ 예시 설명

 ▶ 1번째 날 온도는 2입니다.
 ▶ 6번째 날 온도는 3입니다.
 ▶ 두 날짜 사이에서 두날짜보다 기온이 높았던 날은 3번째, 4번째 날입니다.
 ▶ 따라서 2를 return하면 됩니다.

 

◇ 초기 내용

[출처]goormedu COSPRO 2급 기출문제 [6차] 문제1 초기내용


◇ 답안

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

int solution(int temperature[], int temperature_len, int A, int B) {
    int answer = 0;
    int max = 0;
	if (temperature[A] > temperature[B]) {
		max = temperature[A];
	}
	else {
		max = temperature[B];
	}
	for (int i = A; i < B; i++) {
		if (max < temperature[i]) {
			answer++;
		}
	}
    return answer;
}

int main() {
	int temperature[] = {3, 2, 1, 5, 4, 3, 3, 2};
	int temperature_len = 8;
	int A = 1;
	int B = 6;
	int ret = solution(temperature, temperature_len, A, B);

	printf("solution 함수의 반환 값은 %d 입니다.\n", ret);
}

 

◇ 답안 힌트

    ▶ A번째일과 B번째일 중 더 높은 평균기온을 가진 날짜를 구하세요

    ▶ A번째일과 B번째일 사이의 날짜 중 위에서 구한 평균기온보다 높은 온도가 있는지 확인하고 있으면 answer +1

 

◇ 답안 풀이

(※ 실행 흐름 순으로 해석됩니다.)

<solution함수 전체를 작성하는 문제입니다.>

int solution(int temperature[], int temperature_len, int A, int B) {
    int answer = 0;

    //A번째일과 B번째일 중 기온이 높은 날의 온도를 나타내는 변수
    int max = 0; 

    

    //A번째 일과 B번째일 중 기온이 높은 날 구하기
    if (temperature[A] > temperature[B]) {
        max = temperature[A];
    }
    else {
        max = temperature[B];
    }

 

    //A와 B번째일 사이 날짜 중 max보다 평균 기온이 높은 날의 개수 구하기
    for (int i = A; i < B; i++) {
        if (max < temperature[i]) {
            answer++;
        }
    }
    return answer;
}

 

◇ 실행결과

[6차] 문제1) 저는 따뜻한 날이 좋아요. 실행 결과

 

◇ 출처

https://edu.goorm.io/learn/lecture/16921/cos-pro-2%25EA%25B8%2589-%25EA%25B8%25B0%25EC%25B6%259C%25EB%25AC%25B8%25EC%25A0%259C-c%25EC%2596%25B8%25EC%2596%25B4

 

COS PRO 2급 기출문제 - C언어 - 구름EDU

YBM IT에서 시행하는 COS Pro 자격증 기출문제를 직접 풀어볼 수 있는 실습 위주의 강좌입니다.

edu.goorm.io

 

댓글