범위를 이용한 배열 슬라이싱
Coddy Ruby 여정의 기초 섹션에 포함된 레슨 — 88개 중 69번째.
때로는 개별 요소에 접근하는 대신 배열의 일부를 추출해야 할 때가 있습니다. Ruby에서는 범위를 사용하여 배열을 슬라이스할 수 있으며, 이를 통해 지정한 요소만 포함하는 새 배열을 생성합니다.
범위를 사용하여 배열을 슬라이스하려면 대괄호 안에 범위를 입력합니다:
numbers = [10, 20, 30, 40, 50]
slice = numbers[1..3]
puts slice # 출력: 20, 30, 40범위 1..3은 인덱스 1, 2, 3에 있는 요소들을 포함합니다. 배열 인덱스는 0부터 시작한다는 점을 기억하세요. 따라서 인덱스 1은 두 번째 요소입니다.
세 개의 점 범위(...)를 사용하여 마지막 인덱스를 제외할 수도 있습니다:
letters = ["a", "b", "c", "d", "e"]
slice = letters[0...3]
puts slice # 출력: a, b, c여기서 0...3은 인덱스 0, 1, 2를 포함하지만, 인덱스 3 직전에서 멈춥니다.
음수 인덱스는 범위(range)에서도 작동합니다. 배열의 끝에서부터 거꾸로 세며, -1은 마지막 요소를 나타냅니다:
colors = ["red", "green", "blue", "yellow"]
slice = colors[1..-1]
puts slice # 출력: green, blue, yellow이것은 인덱스 1부터 마지막 요소까지 모든 것을 추출하며, 배열의 길이를 모르는 상태에서 첫 번째 요소를 건너뛰고 싶을 때 유용합니다.
챌린지
쉬움두 개의 입력을 읽으십시오:
- 쉼표로 구분된 정수들이 포함된 한 줄 (예:
10,20,30,40,50,60,70) start..end또는start...end형식의 범위 지정 (예:2..5또는1...4)
첫 번째 입력을 정수 배열로 분할하십시오. 그런 다음 두 번째 입력의 범위를 사용하여 배열을 슬라이스하고, 슬라이스된 부분의 각 요소를 개별 줄에 출력하십시오.
범위 입력은 마지막 인덱스를 포함하기 위해 두 개의 점(..)을 사용하거나, 마지막 인덱스를 제외하기 위해 세 개의 점(...)을 사용합니다.
예를 들어, 입력이 10,20,30,40,50,60,70와 2..5라면, 출력은 다음과 같아야 합니다:
30
40
50
60입력이 5,10,15,20,25,30와 0...3라면, 출력은 다음과 같아야 합니다:
5
10
15입력이 100,200,300,400,500와 1..-1라면, 출력은 다음과 같아야 합니다:
200
300
400
500입력이 a,b,c,d,e,f와 -3..-1라면, 출력은 다음과 같아야 합니다:
d
e
f치트 시트
배열의 일부를 추출하려면 대괄호 안에 범위를 사용하세요:
numbers = [10, 20, 30, 40, 50]
slice = numbers[1..3]
# Returns [20, 30, 40] (indexes 1, 2, and 3)마지막 인덱스를 포함하려면 마침표 두 개(..)를 사용하세요:
letters = ["a", "b", "c", "d", "e"]
slice = letters[0..2]
# Returns ["a", "b", "c"] (indexes 0, 1, and 2)마지막 인덱스를 제외하려면 마침표 세 개(...)를 사용하세요:
letters = ["a", "b", "c", "d", "e"]
slice = letters[0...3]
# Returns ["a", "b", "c"] (indexes 0, 1, and 2, stops before 3)음수 인덱스는 배열의 끝에서부터 계산합니다(-1은 마지막 요소입니다):
colors = ["red", "green", "blue", "yellow"]
slice = colors[1..-1]
# Returns ["green", "blue", "yellow"] (from index 1 to the last element)직접 해보기
# 쉼표로 구분된 값들을 읽습니다
input_values = gets.chomp
# 범위 사양을 읽습니다
range_spec = gets.chomp
# TODO: 아래에 코드를 작성하세요
# 1. input_values를 분할하여 배열로 만듭니다
# 2. range_spec을 분석하여 시작, 끝, 그리고 .. 또는 ... 사용 여부를 결정합니다
# 3. 적절한 범위를 사용하여 배열을 슬라이스합니다
# 4. 슬라이스된 부분의 각 요소를 개별 줄에 출력합니다이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.