본문 바로가기
코딩 테스트/[c언어] cos pro 2급 기출문제

[No.31] 상담 선생님은 너무 바빠요 / cos pro 2급 c언어 기출 문제

by M개발자 2021. 5. 18.
반응형

상담 선생님은 너무 바빠요


문제 설명

 

학생 10명이 상담을 받기 위해 매일 한 명씩, 순서대로 상담실을 찾아갑니다. 상담은 상담 선생님이 계실 때에만 상담을 받을 수 있습니다. 또한 한번 상담실을 방문한 삭생은 다시 상담실에 찾아가지 ㅇ낳습니다. 선생님의 일정표가 주어질 때, 누가 상담을 받지 못했는지 알고 싶습니다. 

 

선생님의 일정을 담은 배열 schedule과 schedule의 길이 schedule_len이 매개변수로 주어질 때, 상담을 받지 못한 학생의 번호를 오름차순으로 정렬하여 return 하도록 solution 함수를 작성하세요. 

 


예시

 

schedule schedule_len return 
{"O", "X", "X", "O", "O", "O", "X", "O", "X", "X"} 10 {2, 3, 7, 9, 10}

 


코드 해석 및 전체 코드

 

x_count ) 상담을 받지 못한 학생들의 수를 담을 변수

 

for문 1 ) 0 ~ schedule_len - 1까지 반복한다.

if in for ) schedule[i][0]이 'X'일 경우 x_count를 1 증가한다. 

i schedule[i][0] x_count
0 "O"  
1 "X" x_count++
2 "X" x_count++
3 "O"  
4 "O"  
5 "O"  
6 "X" x_count++
7 "O"  
8 "X" x_count++
9 "X" x_count++

schedule[1][0], schedule[2][0], schedule[6][0], schedule[8][0], schedule[9][0]가 "X"이므로 x_count는 5번 증가하여 5이다.

 

*answer ) 상담을 받지 못한 학생들의 번호를 오름차순으로 정렬하여 return할 변수로 x_count만큼의 길이를 가지고 있다.

 

for문 2 ) i : 0 ~ schedule_len - 1까지 반복한다. j : j의 초깃값은 0으로, 상담을 받지 못한 학생을 나타낼 변수이다.

 

if in for ) schedule[i][0]가 "X"이면 answer[j]에 i + 1을 담고, j를 증가시킨다. 

answer[j++] ) 이 문제의 조건은 빈칸을 채우는 거로, 빈칸은 if문 안 빈칸 = 빈칸 으로 되어있다. answer에 번호를 담으면서 j도 함께 증가시켜야 하므로 answer[j++]을 해야 값을 채우면서 j를 증가시킨다. 
i + 1 ) i는 0부터 시작하지만 학생의 번호는 1부터 시작하기에 + 1을 해줘야 한다. 

 

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
int* solution(char* schedule[], int schedule_len) {
    int x_count = 0;
    for (int i = 0; i < 10; i++)
        if (schedule[i][0] == 'X')
            x_count++;

    int* answer = (int*)malloc(sizeof(int) * x_count);
    for (int i = 0, j = 0; i < 10; i++) {
        if (schedule[i][0] == 'X') {
            answer[j++] = i + 1;
            //answer[j] = i + 1;
            //j++;
        }
    }
    return answer;
}
int main() {
    char* schedule[] = {"O", "X", "X", "O", "O", "O", "X", "O", "X", "X"};
    int* ret = solution(schedule, 10);

    printf("solution 함수의 반환 값은 ");
    for(int i=0; i<5; i++)
        printf("%d, ", ret[i]);
    printf("입니다.");

}

cos pro 2급 기출문제

github

 

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

[4차] 문제1) 상담 선생님은 너무 바빠요

반응형

댓글