Menu
Coddy logo textTech

특정 루프 계속하기

Coddy GO 여정의 로직 & 흐름 섹션에 포함된 레슨. 68개 중 3번째.

break와 함께 레이블을 사용하여 특정 loops를 빠져나올 수 있는 것처럼, Go에서는 continue 문과 함께 레이블을 사용할 수도 있습니다. 레이블이 지정된 continue는 지정된 loop의 현재 iteration을 건너뛰고 다음 iteration으로 이동합니다.

이는 특히 nested loops에서 inner loop 내부에서 outer loop의 현재 iteration의 나머지 부분을 건너뛰고 싶을 때 유용하며, 단순히 inner loop를 계속 진행하는 것과는 다릅니다.

outer:
for i := 0; i < 3; i++ {
    for j := 0; j < 3; j++ {
        if i == 1 && j == 0 {
            continue outer
        }
        fmt.Printf("i=%d, j=%d\n", i, j)
    }
    fmt.Println("End of outer loop iteration")
}

이 예제에서 i == 1 && j == 0일 때, continue outer 문은 내부 루프와 "End of outer loop iteration" 메시지를 포함하여 외부 루프의 현재 반복에서 나머지 부분을 건너뜁니다. 그런 다음 프로그램은 외부 루프의 다음 반복으로 바로 이동하며, 이때 i는 2가 됩니다.

challenge icon

챌린지

쉬움

이 챌린지에서는 레이블이 지정된 continue 문을 사용하여 중첩된 loop 실행을 제어하는 연습을 합니다. 내부 loop에서 발견된 condition에 따라 특정 outer loop 반복을 건너뛰어야 하는 data 처리 시스템을 구축합니다.

두 개의 inputs를 받습니다.

  • process할 행의 number를 나타내는 string(예: "4")
  • skip condition number를 나타내는 string(예: "3")

다음과 같은 2D data array가 Provided됩니다.

data := [][]int{
    {1, 2, 3, 4, 5},
    {6, 7, 8, 9, 10},
    {11, 12, 13, 14, 15},
    {16, 17, 18, 19, 20},
    {21, 22, 23, 24, 25}
}

여러분의 작업은 다음과 같습니다.

  1. 첫 번째 input에서 행의 number를 Parse하여 process할 행의 수를 결정합니다.
  2. 두 번째 input에서 skip condition number를 Parse합니다.
  3. 레이블이 지정된 continue를 사용하는 nested loop로 data를 process합니다.
  4. each row에 대해 해당 row의 각 열 값을 확인합니다.
  5. row의 어느 열에서든 skip condition number를 found하면, 레이블이 지정된 continue를 사용하여 해당 row의 나머지 처리를 건너뛰고 다음 row로 이동합니다.
  6. skip condition number를 포함하지 않는 row에는 "Processing row [row_number]: [value1] [value2] [value3] [value4] [value5]"를 Print합니다.
  7. skip condition number를 포함하는 row에는 "Skipping row [row_number] due to condition"을 Print합니다.

row number는 0-based 인덱싱을 사용하여 보고해야 합니다(첫 번째 row는 0). 첫 번째 input에 지정된 number의 row만 process하고, 각 row의 첫 5개 열만 확인합니다.

직접 해보기

package main

import (
    "fmt"
    "strconv"
)

func main() {
    // 입력 읽기
    var rowsInput string
    var skipConditionInput string
    fmt.Scanln(&rowsInput)
    fmt.Scanln(&skipConditionInput)
    
    // 입력 파싱
    numRows, _ := strconv.Atoi(rowsInput)
    skipCondition, _ := strconv.Atoi(skipConditionInput)
    
    // 제공된 2D 데이터 배열
    data := [][]int{
        {1, 2, 3, 4, 5},
        {6, 7, 8, 9, 10},
        {11, 12, 13, 14, 15},
        {16, 17, 18, 19, 20},
        {21, 22, 23, 24, 25},
    }
    
    // TODO: 아래에 코드를 작성하세요
    // labeled continue를 사용한 중첩 루프로 데이터를 처리하세요
    // 각 행에서 skipCondition 숫자를 확인하세요
    // 조건이 발견되었는지 여부에 따라 적절한 메시지를 출력하세요
    
}
quiz icon실력 점검

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

로직 & 흐름의 모든 레슨

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