Case / When에서의 Range 활용
Coddy Ruby 여정의 로직 및 흐름 섹션에 포함된 레슨 — 56개 중 8번째.
범위(Ranges)는 루비의 case 문 안에서 빛을 발합니다. 많은 언어들이 비교 연산자를 사용한 if/elsif 체인을 필요로 하는 반면, 루비는 값을 범위에 직접 매칭할 수 있게 해줍니다.
score = 78
grade = case score
when 90..100 then "A"
when 80..89 then "B"
when 70..79 then "C"
when 60..69 then "D"
else "F"
end
puts grade # C내부적으로는, when 70..79는 범위(range)의 === 연산자를 사용하며, 이는 (70..79).include?(score)와 동일합니다.
case 문은 긴 if/elsif 계단식 구조보다 더 짧고, 읽기 쉬우며, 작성하기 더 빠릅니다.
챌린지
쉬움쉼표로 구분된 정수 연령 리스트를 읽습니다. 각 연령에 대해 범위(ranges)를 사용하는 case 문을 사용하여 분류하세요:
0..12:Child13..19:Teen20..64:Adult65이상:Senior- 그 외의 경우(음수): 건너뛰며, 보고서에 포함되지 않습니다
0이 아닌 각 카테고리에 대해 Child, Teen, Adult, Senior의 고정된 순서로 카운트 라인을 출력하세요. 인원이 0명인 카테고리는 건너뜁니다. 카운트 출력 후, Skipped: <n>을 출력하세요. 여기서 n은 음수(유효하지 않은) 연령의 수입니다.
입력 5,15,30,70,-3,40,12에 대한 출력은 다음과 같습니다:
Child: 2
Teen: 1
Adult: 2
Senior: 1
Skipped: 1치트 시트
case 문에서 범위를 사용하세요 — 루비는 ===(include?와 동일)를 통해 매칭합니다:
score = 78
grade = case score
when 90..100 then "A"
when 80..89 then "B"
when 70..79 then "C"
when 60..69 then "D"
else "F"
end
puts grade # C직접 해보기
ages = gets.chomp.split(",").map(&:to_i)
# TODO: case + ranges를 사용하여 각 연령을 분류하고, 카테고리별로 개수를 세어 보고서를 출력하세요.
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.