모든 점수가 통과선 이상인지 확인하기
자바스크립트 코딩테스트 문제로 array-predicate-methods 주제를 연습해보세요. 난이도는 easy이며, 브라우저에서 바로 JavaScript로 풀이를 실행할 수 있습니다.
점수 배열 scores와 기준 점수 passScore가 주어질 때, 모든 점수가 기준 이상이면 true, 하나라도 기준보다 작으면 false를 반환하는 checkAllScoresPass 함수를 작성하세요.
오늘의 메서드
every()
메서드 설명
every()는 배열의 모든 요소가 조건을 만족하는지 검사하는 메서드입니다.- 배열을 앞에서부터 확인하다가 조건을 만족하지 않는 요소를 만나면 바로
false를 반환합니다. - 끝까지 모두 통과하면
true를 반환합니다.
기본 문법
arr.every((element) => 조건식)
사용 예시
const scores = [70, 82, 90, 76];
scores.every((score) => score >= 70); // true
scores.every((score) => score >= 80); // false
주의할 점
every()의 반환값은 불리언(true또는false)입니다.- 조건을 하나라도 만족하지 못하는 요소가 있으면 바로
false가 됩니다. - 원본 배열을 변경하지 않습니다.
- 이 문제에서는 점수 배열의 길이가 1 이상이라고 가정하므로, 빈 배열 처리는 신경 쓰지 않아도 됩니다.
제한사항
scores는 길이 1 이상 100 이하의 정수 배열입니다.- 각 점수는 0 이상 100 이하입니다.
passScore는 0 이상 100 이하의 정수입니다.- 모든 점수가
passScore이상이면true, 아니면false를 반환합니다.
예시
- 입력:
[70, 82, 90, 76],70→ 출력:true - 입력:
[88, 91, 67, 95],70→ 출력:false - 입력:
[50],50→ 출력:true
힌트
- 점수를 하나씩 보면서
score >= passScore인지 확인해 보세요. - 이 문제는 모든 값이 조건을 만족해야 하는지 확인하는 문제입니다.
- 조건을 만족하지 않는 점수가 하나라도 있으면 바로
false가 되어야 합니다.
해설
이 문제의 핵심은 배열의 모든 점수가 기준 점수 이상인지 한 번에 검사하는 것입니다. 이런 상황에서는 every()가 잘 맞습니다.
먼저 scores.every(...)를 사용해 각 점수가 passScore 이상인지 검사합니다.
scores.every((score) => score >= passScore)
이 코드는 배열의 각 점수를 앞에서부터 확인합니다.
score >= passScore가 계속true이면 끝까지 검사합니다.- 중간에 하나라도
false가 나오면 바로 전체 결과는false가 됩니다.
예를 들어 [88, 91, 67, 95]와 기준 점수 70이라면:
- 88은 통과
- 91은 통과
- 67은 기준 미만
- 따라서 더 볼 필요 없이 결과는
false입니다.
정답 코드는 아주 간단하게 작성할 수 있습니다.
function checkAllScoresPass(scores, passScore) {
return scores.every((score) => score >= passScore);
}
이 풀이가 적합한 이유는 다음과 같습니다.
- 문제 요구사항이 “모든 요소가 조건을 만족하는가”와 정확히 일치한다
- 반복문과 플래그 변수를 직접 만들지 않아도 된다
- 코드가 짧고 읽기 쉽다
즉, every()는 배열 전체가 같은 기준을 통과하는지 검사하는 패턴을 익히기에 좋은 메서드입니다.
코드 작성
starter code를 바탕으로 함수를 완성한 뒤 예제 테스트를 실행해보세요.
JavaScript
에디터 로딩 중...
커스텀 테스트
함수 인자를 JSON 배열 형태로 입력하세요. 예: [3, 5], [[1, 2, 3]]
아직 실행하지 않았습니다.
실행 결과
아직 실행하지 않았습니다.
예제 테스트를 실행하면 여기에서 결과를 확인할 수 있습니다.
댓글
문제 풀이 아이디어, 질문, 반례를 자유롭게 나눠보세요.