상담 선생님은 너무 바빠요
문제 설명
학생 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("입니다.");
}
구름 goormedu COS PRO 2급 기출문제 - C언어
[4차] 문제1) 상담 선생님은 너무 바빠요
'코딩 테스트 > [c언어] cos pro 2급 기출문제' 카테고리의 다른 글
[No.33] 획득 점수 구하기. 도박은 안돼요. / cos pro 2급 c언어 기출 문제 (0) | 2021.05.19 |
---|---|
[No.32] 시험 합격자가 몇 명이지? / cos pro 2급 c언어 기출 문제 (1) | 2021.05.18 |
[No.30] 내 절반이 여기에 있는가? / cos pro 2급 c언어 기출 문제 (0) | 2021.05.17 |
[No.29] 주차장에 몇 대가 들어올 수 있는 거야? / cos pro 2급 c언어 기출 문제 (0) | 2021.05.17 |
[No.28] TV 애청자 A씨 / cos pro 2급 c언어 기출 문제 (1) | 2021.05.16 |
댓글