중첩 반복문
Coddy Ruby 여정의 기초 섹션에 포함된 레슨. 88개 중 46번째.
중첩 루프를 만들려면 루프 안에 다른 루프를 배치할 수 있습니다. 내부 루프는 외부 루프의 각 반복마다 완전히 실행되므로, 이 패턴은 격자, 표 또는 조합을 다룰 때 유용합니다.
rows = 2
cols = 3
for i in 1..rows
for j in 1..cols
puts "i=#{i}, j=#{j}"
end
end이 코드는 여섯 줄을 출력합니다. i의 각 값에 대해 내부 루프는 j의 모든 값을 순회합니다.
먼저 i는 1이고, j는 1, 2, 3으로 진행됩니다. 그런 다음 i는 2가 되고, j는 다시 1, 2, 3으로 진행됩니다. rows와 cols는 절대 바뀌지 않습니다. 이 변수들은 루프가 언제 멈출지만 알려 줍니다.
실용적인 예로 간단한 곱셈 패턴을 만들어 볼 수 있습니다:
for row in 1..3
for col in 1..3
print "#{row * col} "
end
puts ""
end이 코드는 3x3 제품 그리드를 출력합니다. print는 값을 같은 줄에 유지하고, puts ""는 각 행이 완료된 후 새 줄로 이동합니다. for 루프 안에 times 루프를 사용하는 것처럼 서로 다른 루프 유형을 함께 사용할 수도 있습니다.
챌린지
쉬움입력에서 정수 두 개를 읽습니다:
rows- 행의 개수cols- 열의 개수
중첩 루프를 사용해 주어진 크기의 별표(*)로 이루어진 직사각형을 출력하세요. 각 행에는 공백으로 구분된 별표 cols개가 있어야 하며, 각 행은 별도의 줄에 출력되어야 합니다.
행 안의 별표를 출력할 때는 print를 사용하고, 각 행 다음에 다음 줄로 이동할 때는 puts를 사용하세요.
예를 들어 입력이 3과 4이면 출력은 다음과 같아야 합니다:
* * * *
* * * *
* * * *입력이 2와 5이면 출력은 다음과 같아야 합니다:
* * * * *
* * * * *행의 마지막 * 뒤에는 공백이 없습니다.
각 루프마다 새 카운터를 사용하고(예를 들어 행에는 row, 한 행의 별표에는 col) 이를 rows 또는 cols와 비교하세요. rows와 cols 자체는 변경하지 마세요. 각 행에서 cols를 다시 사용해야 합니다.
직접 해보기
# 입력을 읽습니다
rows = gets.to_i
cols = gets.to_i
# TODO: 아래에 코드를 작성하세요
# 중첩 반복문을 사용해 별표로 이루어진 직사각형을 출력하세요
# 행 안의 별표는 print로 출력하고, 다음 줄로 넘어갈 때는 puts를 사용하세요이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
기초의 모든 레슨
직접 연습해 보세요: 온라인 Ruby 컴파일러