Menu
Coddy logo textTech

repeat와 break

Coddy R 여정의 논리와 흐름 섹션에 포함된 레슨. 64개 중 49번째.

repeat는 내부의 break가 루프를 중지할 때까지 본문을 계속해서 반복 실행합니다. 본문 중간에서만 종료 조건을 알 수 있는 루프에 적합합니다:

n <- 1
repeat {
  n <- n * 2
  if (n > 50) break
}
print(n)

출력:

[1] 64

콜라츠 수열이 한 예입니다. 짝수는 절반으로 줄이고, 홀수는 3n + 1로 바꾼 다음 1에서 멈춥니다. 단계 수는 미리 알 수 없습니다.

n <- 6
steps <- 0
repeat {
  if (n == 1) break
  n <- if (n %% 2 == 0) n / 2 else 3 * n + 1
  steps <- steps + 1
}
print(steps)

출력:

[1] 8

next는 현재 반복의 나머지 부분을 건너뛰고 다음 반복을 시작합니다. repeat, while 및 for 루프에서 사용할 수 있습니다:

for (x in 1:8) {
  if (x %% 3 == 0) next
  cat(x, "")
}
cat("\n")

출력:

1 2 4 5 7 8 

도달 가능한 break가 없는 repeat 루프는 끝나지 않습니다. 종료 여부가 데이터에 따라 결정될 때는 안전 제한으로 카운터를 유지하세요:

total <- 0
tries <- 0
repeat {
  tries <- tries + 1
  total <- total + tries
  if (total >= 20 || tries == 100) break
}
print(c(tries, total))

출력:

[1]  6 21
challenge icon

챌린지

쉬움

digital_root(n)을 완성하세요. 한 자리 숫자만 남을 때까지 n을 각 자릿수의 합으로 바꾸고, <result> after <steps> steps를 반환하세요: 9875는 2 after 3 steps를 반환합니다(9875, 29, 11, 2). 이미 한 자리 숫자인 경우 단계 수는 0입니다.

sum(as.numeric(strsplit(as.character(n), "")[[1]]))은 n의 자릿수를 더합니다.

제공된 코드는 n을 읽고 반환된 값을 출력합니다.

직접 해보기

digital_root <- function(n) {
  # 여기에 코드를 작성하세요
  ""
}

# 제공된 입력/출력 코드: 그대로 유지하세요
input <- suppressWarnings(readLines(file("stdin")))
cat(digital_root(as.numeric(input[1])), sep = "\n")
quiz icon실력 점검

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

논리와 흐름의 모든 레슨

직접 연습해 보세요: 온라인 R 컴파일러