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

[No.29] 주차장에 몇 대가 들어올 수 있는 거야? / cos pro 2급 c언어 기출 문제

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

주차장에 몇 대가 들어올 수 있는 거야?


문제 설명

 

  관공서 주차장에서는 차량 2부제를 실시합니다. 차량 2부제는 차량 번호 끝자리가 홀수인 차량은 홀수 일에만, 짝수인 차량은 짝수 일에만 주차장에 들어올 수 있도록 하는 제도입니다.

 

  며칠인지를 나타내는 day, 그날 주차장에 들어오려고 하는 차들의 번호를 담고 있는 배열 numbers와 numbers의 길이 numbers_len이 매개변수로 주어질 때, 주차장에 들어올 수 있는 차량의 수를 return 하도록 solution 함수를 작성했습니다.

그러나, 코드 일부분이 잘못되어있기 때문에 올바르게 동작하지 않으므로 한 줄만 변경해서 올바르게 동작하도록 수정하세요.

 


예시

 

day numbers numbers_len return 
17 [3285, 1724, 4438, 2988, 3131, 2998] 6 2

 


수정해야 할 코드

더보기
int solution(int day, int numbers[], int numbers_len) {
    int count = 0;
    for(int i = 0; i < numbers_len; i++)
    	if(numbers[i] % 2 != day % 2)
    		count++;
    return count;
}

 

수정

if(numbers[i] % 2 != day % 2)
→ if(numbers[i] % 2 == day % 2)

 

짝수일에는 끝자리가 짝수인 번호만, 홀수일에는 끝자리가 홀수인 번호만 들어온다.

번호를 2로 나누었을 때와 날짜를 2로 나누었을 때, 짝수면 0 홀수면 1이 나온다. 

 

짝수인 번호는 짝수 날과 같아야지 count를 증가하는데, 수정 전 코드는 짝수인 번호와 홀수인 날과 같으면 count를 증가하기 때문에 오류가 발생한다. 

 

코드 해석 및 전체 코드

 

count ) 주차장에 들어올 수 있는 차량의 수를 return 할 변수

 

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

 

if문 ) numbers[i] 를 2로 나누었을 때의 나머지와 day를 2로 나누었을 때의 나머지의 값이 같으면 count를 1 증가한다.

i numbers[i] % 2 day % 2 if문 만족
0 3285 % 2
= 1
17 % 2 
= 1
O
1 1724 % 2
= 0
1 X
2 4438 % 2
= 0
1 X
3 2988 % 2
= 0
1 X
4 3131 % 2
= 1
1 O
5 2998 % 2
= 0
1 X

day는 17일로 홀수이고, numbers[0]과 numbers[4]가 홀수 번호이므로 count는 2 증가되어 2이다. 

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

int solution(int day, int numbers[], int numbers_len) {
    int count = 0;
    for (int i = 0; i < numbers_len; i++)
        if (numbers[i] % 2 == day % 2)
            count++;
    return count;
}
int main() {
    int day = 17;
    int numbers[] = { 3285, 1724, 4438, 2988, 3131, 2998 };
    int numbers_len = 6;
    int ret = solution(day, numbers, numbers_len);
    printf("solution 함수의 반환 값은 %d입니다.\n", ret);
}

cos pro 2급 기출문제

github

 

구름 goormedu COS PRO 2급 기출문제 - C언어[3차] 

문제9) 주차장에 몇대가 들어올수 있는거야?

반응형

댓글