반응형
내 절반이 여기에 있는가?
문제 설명
배열 원소인 자신을 2로 나눈 값이 배열에 있는 수의 개수를 구하려고 합니다.
숫자가 담김 배열 arr과 arr의 길이 arr_len이 주어졌을 때, 자신을 2로 나눈 값이 배열에 들어있는 수가 몇 개인지 return 하는 solution함수를 작성했습니다.
그러나, 코드 일부분이 잘못되어있기 때문에 올바르게 동작하지 않으므로 한 줄만 변경해서 올바르게 동작하도록 수정하세요.
예시
arr | arr_len | return |
{4, 8, 3, 6, 3} | 5 | 2 |
수정해야 할 코드
더보기
int solution(int arr[], int arr_len) {
int answer = 0;
for (int i = 0; i < arr_len; i++)
for (int j = 0; j < arr_len; j++)
if (arr[i]%2 == 0 && arr[i]/2 == arr[j]) {
answer++;
continue;
}
return answer;
}
수정
for (int j = 0; j < arr_len; j++) → for (int j = 0; j < arr_len - 1; j++) |
j의 범위를 배열 마지막까지 한다면, arr[arr_len-1]을 할 때 arr[i]/2 == arr][j] 때 arr[j]가 쓰레기 값이 들어간다.
코드 해석 및 전체 코드
answer ) 자신을 2로 나눈 값이 배열에 들어있는 수가 몇 개인지 return할 변수
for문 ) 0 ~ arr_len - 1까지 반복한다
for in for ) 0 ~ arr - 2까지 반복한다.
if문 ) arr[i]를 2로 나누었을 때 0일 때 arr[i] / 2과 arr[j]가 같으면 answer를 증가시킨다.
&&는 하나라도 false면 모두 false이므로 두 조건 모두 만족해야 한다.
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
int solution(int arr[], int arr_len) {
int answer = 0;
for (int i = 0; i < arr_len; i++)
for (int j = 0; j < arr_len - 1; j++)
if (arr[i] % 2 == 0 && arr[i] / 2 == arr[j]) {
answer++;
}
return answer;
}
int main() {
int arr[] = { 4, 8, 3, 6, 3 };
int arr_len = 5;
int ret = solution(arr, arr_len);
printf("solution 함수의 반환 값은 %d입니다.\n", ret);
}
구름 goormedu COS PRO 2급 기출문제 - C언어
[3차] 문제10) 내 절반이 여기에 있는가?
반응형
'코딩 테스트 > [c언어] cos pro 2급 기출문제' 카테고리의 다른 글
[No.32] 시험 합격자가 몇 명이지? / cos pro 2급 c언어 기출 문제 (1) | 2021.05.18 |
---|---|
[No.31] 상담 선생님은 너무 바빠요 / cos pro 2급 c언어 기출 문제 (0) | 2021.05.18 |
[No.29] 주차장에 몇 대가 들어올 수 있는 거야? / cos pro 2급 c언어 기출 문제 (0) | 2021.05.17 |
[No.28] TV 애청자 A씨 / cos pro 2급 c언어 기출 문제 (1) | 2021.05.16 |
[No.27] 남은 재료로 주스 만들기 / cos pro 2급 c언어 기출 문제 (0) | 2021.05.16 |
댓글