[R] 반복문 비교 및 코드 예시 설명(3,5,7,9,11 트리 구조 출력)

해당 포스트에서는 네이버 지식인을 통해 질문 받은 반복문을 이용한 특정 출력 방법(3,5,7,9,11 트리 구조 출력)에 대해 설명합니다.

while-for-repeat-in-r

INTRO

R의 대표적인 반복문에는 for(), while(), repeat() 문이 있습니다. 각 반복문은 유사하게 동작하지만 조금씩 다른 사용법을 가지고 있으며, 아래에서는 네이버 지식인에서 질문받은 문제를 이용하여 예시와 함께 설명합니다.

while-for-repeat-in-r
[출처] 네이버 지식인

반복문 비교

아래 세 가지 반복문은 각각의 특성에 따라 적합한 상황이 있으며, 적절히 활용하는 것이 중요합니다.

for문은 리스트나 벡터와 같은 순차적인 데이터를 처리하는 경우에 유용하며, while문은 반복 조건에 따라 반복 횟수가 결정되는 경우에 적합합니다. 반면, repeat문은 무한 반복문으로, 반복을 중단할 조건이 명확한 경우에만 사용하는 것이 좋습니다.

for문

  • 지정된 횟수만큼 반복하며, 주로 리스트나 벡터와 같은 순차적인 데이터를 처리할 때 사용
  • 예를 들어, 리스트 내의 모든 원소를 출력하거나, 벡터 내의 값을 변경하는 등의 작업에 적합

while문

  • 조건이 참인 동안 반복하며, 조건에 따라 반복 횟수가 결정
  • 예를 들어, 특정 값이 특정 조건을 만족할 때까지 반복하거나, 사용자가 특정 행동을 할 때까지 반복하는 등의 작업에 적합

repeat

  • 무한 반복문으로, break 함수나 조건문 등을 통해 중단되지 않는 한 계속해서 반복
  • 예를 들어, 사용자의 입력이 올바르게 들어올 때까지 반복하거나, 특정 조건을 만족할 때까지 계속해서 실행하는 등의 작업에 적합

예시 코드 설명

예시 코드 설명에서는 반복문 for(), while(), repeat()을 이용하여 아래 출력을 얻기 위한 코드를 작성합니다.
이 문제는 간단한 패턴의 출력을 구하는 것으로, 3부터 11까지 2씩 증가하는 정수들을 출력하되, 각 줄에는 해당 정수가 몇 개씩 출력되어야 하는지 패턴 파악하여야 합니다.

3
5 5
7 7 7
9 9 9 9
11 11 11 11 11

for문

아래 코드는 1부터 5까지 for문을 이용하여 5줄을 출력합니다. cat() 함수를 사용하여 각 줄에 해당하는 숫자를 반복 출력하며, paste() 함수를 이용하여 정수와 공백을 이어 붙이고, rep() 함수를 이용하여 해당 숫자를 몇 번 출력할지 결정합니다.

for(i in 1:5) {
  cat(rep(paste(i * 2 + 1), i), "\n")
}
3 
5 5 
7 7 7 
9 9 9 9 
11 11 11 11 11

while문

아래 코드는 i 변수를 초기값 1로 설정하고, while문을 이용하여 5줄을 출력합니다. cat() 함수와 paste() 함수, rep() 함수는 for문 때와 같이 사용됩니다. i 변수를 1씩 증가시키면서 5를 초과하게 되면 while문을 종료합니다.

i <- 1
while (i <= 5) {
  cat(rep(paste(i * 2 + 1), i), "\n")
  i <- i + 1
}
3 
5 5 
7 7 7 
9 9 9 9 
11 11 11 11 11 

repeat문

아래 코드는 i 변수를 초기값 1로 설정하고, repeat문을 이용하여 5줄을 출력합니다. cat() 함수와 paste() 함수, rep() 함수는 for문while문 때와 동일하게 사용되며, i 변수를 1씩 증가시키면서 5를 초과화게 되면 repeat문을 종료합니다. if문을 이용하여 i가 5보다 크거나 같을 때 break()를 이용하여 repeat문을 종료합니다.

i <- 1
repeat {
  cat(rep(paste(i * 2 + 1), i), "\n")
  i <- i + 1
  if (i > 5)
    break
}
3 
5 5 
7 7 7 
9 9 9 9 
11 11 11 11 11 

마무리

R 반복문은 프로그래밍 학습 과정에서 자주 나타나는 문제로, 입문자들에게는 로직 및 반복값에 대한 이해를 요구하며, 중급자들에게는 코드 최적화의 단골 손님으로 등장합니다.

다양한 반복문 문제들을 풀어보면서 로직을 이해하고, 위 코드와 같이 2,3중으로 늘어날 수 있는 반복문 구조를 내장 반복 함수(rep() 등)를 활용하여 단일 반복문 구조로 만드는 연습이 필요합니다.


관련 링크

[1] [R] Problem 1 : 1000보다 작은 자연수 중에서 3 또는 5의 배수를 모두 더하면?
[2] [R] 1부터 100까지 3의 배수의 합과 평균 계산하기
[3] [R] 반복문을 이용한 별 출력 예제 1탄 (feat. 직각삼각형, 피라미드)
[4] [R] 반복문을 이용한 별 출력 예제 2탄 (feat. 다이아몬드, 마름모, 나비, 모래시계)