코딩 테스트/[c언어] cos pro 2급 기출문제
[No.29] 주차장에 몇 대가 들어올 수 있는 거야? / cos pro 2급 c언어 기출 문제
M개발자
2021. 5. 17. 22:44
반응형
주차장에 몇 대가 들어올 수 있는 거야?
문제 설명
관공서 주차장에서는 차량 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);
}
구름 goormedu COS PRO 2급 기출문제 - C언어[3차]
문제9) 주차장에 몇대가 들어올수 있는거야?
반응형