Menu
Coddy logo textTech

Map과 Collect

Coddy Ruby 여정의 기초 섹션에 포함된 레슨 — 88개 중 68번째.

each는 요소에 대해 작업을 수행하는 데 유용하지만, 때로는 배열을 새로운 배열로 변환하고 싶을 때가 있습니다. map 메서드(collect라고도 함)가 바로 이 역할을 합니다. 이 메서드는 각 요소에 대해 블록을 실행한 결과를 포함하는 새로운 배열을 생성합니다.

numbers = [1, 2, 3, 4]
doubled = numbers.map { |n| n * 2 }

puts doubled  # 출력: 2, 4, 6, 8

each와의 주요 차이점은 map이 변환된 값들을 담은 새로운 배열을 반환한다는 점입니다. 원본 배열은 변경되지 않고 그대로 유지됩니다.

섭씨 온도를 화씨 온도로 변환하는 실용적인 예제입니다:

celsius = [0, 20, 100]
fahrenheit = celsius.map { |c| c * 9 / 5 + 32 }

puts fahrenheit  # 출력: 32, 68, 212

문자열과 함께 map을 사용할 수도 있습니다:

names = ["alice", "bob"]
capitalized = names.map { |name| name.capitalize }

puts capitalized  # 출력: Alice, Bob

mapcollect 메서드는 동일합니다. 루비는 두 가지 이름을 모두 제공하므로, 코드에서 더 읽기 좋은 것을 사용할 수 있습니다. 대부분의 루비 개발자들은 더 짧은 map을 선호합니다.

challenge icon

챌린지

쉬움

쉼표로 구분된 정수들이 포함된 한 줄의 입력을 읽습니다 (예: 2,4,6,8,10).

입력을 정수 배열로 분할한 다음, map 메서드를 사용하여 각 숫자를 제곱(자기 자신을 곱함)한 새로운 배열을 생성하세요.

새로 생성된 제곱 배열의 각 요소를 개별 줄에 출력하세요.

예를 들어, 입력이 2,4,6,8,10인 경우 출력은 다음과 같아야 합니다:

4
16
36
64
100

입력이 1,2,3,4,5인 경우 출력은 다음과 같아야 합니다:

1
4
9
16
25

입력이 3,7,11인 경우 출력은 다음과 같아야 합니다:

9
49
121

입력이 10인 경우 출력은 다음과 같아야 합니다:

100

치트 시트

map 메서드(collect라고도 함)는 각 요소에 블록을 적용하여 배열을 새로운 배열로 변환합니다. 원본 배열은 변경하지 않고 변환된 값들을 담은 새로운 배열을 반환합니다.

numbers = [1, 2, 3, 4]
doubled = numbers.map { |n| n * 2 }
puts doubled  # 출력: 2, 4, 6, 8

온도 변환 예시:

celsius = [0, 20, 100]
fahrenheit = celsius.map { |c| c * 9 / 5 + 32 }
puts fahrenheit  # 출력: 32, 68, 212

문자열 예시:

names = ["alice", "bob"]
capitalized = names.map { |name| name.capitalize }
puts capitalized  # 출력: Alice, Bob

mapcollect는 동일한 메서드입니다. 대부분의 Ruby 개발자들은 map을 선호합니다.

직접 해보기

# 쉼표로 구분된 입력을 읽습니다
input = gets.chomp

# TODO: 아래에 코드를 작성하세요
# 1. 입력 문자열을 정수 배열로 분할합니다
# 2. map 메서드를 사용하여 각 숫자를 제곱합니다
# 3. 제곱된 각 숫자를 개별 줄에 출력합니다
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

기초의 모든 레슨