티스토리 뷰
문제
A대학에서는 수준별 영어 강의를 제공하고 있습니다.
초급 영어 강의는 토익시험에서 650점 이상 800점 미만의 성적을 취득한 학생만을 수강대상으로 하고 있습니다.
초급 영어 강의에 수강신청한 사람이 10명일 때, 이 중에서 몇명이 수강 대상에 해당하는지 확인하려합니다.
수강신청자들의 토익 성적이 들어있는 배열 scores와 scores의 길이 scores_len이 매개변수로 주어질 때, 수강 대상자들의 인원수를 return 하도록 주어진 solution함수를 작성했습니다. 그러나, 코드 일부분이 잘못되어있기 때문에, 몇몇 입력에 대해서는 올바르게 작동하지 않습니다. 주어진 코드에서 한 줄만 변경해서 모든 입력에 대해 올바르게 동작하도록 수정해주세요.
주어진 코드
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
int solution(int scores[], int scores_len) {
int count = 0;
for (int i = 0; i < scores_len; i++)
if (650 <= scores[i] || scores[i] < 800)
count += 1;
return count;
}
int main() {
int scores[10] = { 650, 722, 914, 558, 714, 803, 650, 679, 669, 800 };
int scores_len = 10;
int ret = solution(scores, scores_len);
printf("solution 함수의 반환 값은 %d 입니다.\n", ret);
}
코드 분석/문제해결
단계 | 과정 |
main | scores배열에 10명의 토익점수를 넣고, solution함수를 호출한다. |
solution | solution함수는 배열의 각 값(점수)가 조건에 맞는지 검사하여 맞으면 count++을 해주는 역할을 한다. for문을 배열의 길이(10)만큼 돌리며 각 배열의 값을 검사하기 위해 if (650 <= scores[i] || scores[i] < 800)조건식을 사용하고 있다. 하지만 if (650 <= scores[i] || scores[i] < 800)를 사용하면 650점 이상이거나 800미만인 수라면 무조건 통과된다. 예를 들면 650~799사이의 값이 아닌 914은 650 <= scores[i]조건을 만족하기 때문에 count++이 진행되고, 결국 원하는 값을 얻을 수 없다. |
해결 | 650이상과 800미만의 값을 동시에 만족해야하기 때문에 if (650 <= scores[i] && scores[i] < 800)로 변경한다. |
고친 코드
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
int solution(int scores[], int scores_len) {
int count = 0;
for (int i = 0; i < scores_len; i++)
if (650 <= scores[i] && scores[i] < 800)
count += 1;
return count;
}
int main() {
int scores[10] = { 650, 722, 914, 558, 714, 803, 650, 679, 669, 800 };
int scores_len = 10;
int ret = solution(scores, scores_len);
printf("solution 함수의 반환 값은 %d 입니다.\n", ret);
}
예시
scores | scores_len | return |
[650, 722, 914, 558, 714, 803, 650, 679, 669, 800] | 10 | 6 |
'[코테] > [GroomEdu]' 카테고리의 다른 글
[COS PRO 2급] 9번_중복문자 삭제하기 (C/C++) (0) | 2021.05.07 |
---|---|
[COS PRO 2급] 8번_펠린드롬 확인하기 (C/C++) (0) | 2021.05.06 |
[COS PRO 2급] 5번_배열의 순서 뒤집기 (C/C++) (0) | 2021.05.05 |
[COS PRO 2급] 6번_369게임 박수의 개수는? (C/C++) (1) | 2021.05.05 |
[COS PRO 2급] 4번_등장하는 가장 많은 수와 적은수 구하기 (C/C++) (0) | 2021.05.03 |
댓글
공지사항
최근에 올라온 글
TAG
- 코스프로
- lv2
- c언어
- YBM
- 코딩테스트
- groom
- 구름에듀
- 기출문제
- C
- YBM기출
- 알고리즘
- CosPro
- 연습문제
- programmers
- lv1
- Cos Pro
- 프로그래머스
- 구름 기출문제
- 자바
- cospro기출문제
- COSPRO 2급
- 구름에듀 기출문제
- cospro기출
- 1급
- Java
- 배열활용문제
- C++
- c언어 기출문제
- groomedu
- 배열
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
글 보관함