Menu
CoddyTech

중첩 루프 탈출하기

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

중첩 루프를 사용할 때 일반적인 break 문은 가장 안쪽 루프만 빠져나옵니다. 하지만 Go는 레이블을 제공하므로 바깥쪽 루프에서 바로 빠져나올 수 있어 복잡한 루프 구조를 정밀하게 제어할 수 있습니다.

레이블은 반복문 앞에 놓는 콜론이 뒤따르는 식별자입니다. 레이블 이름 뒤에 break를 사용하면 중첩 반복문 안에서도 해당 반복문을 빠져나올 수 있습니다.

outer:
for i := 0; i < 3; i++ {
    for j := 0; j < 3; j++ {
        if i == 1 && j == 1 {
            break outer
        }
        fmt.Printf("i=%d, j=%d\n", i, j)
    }
}

이 예시에서는 i == 1 && j == 1 조건이 충족되면 break outer가 내부 루프와 외부 루프를 모두 즉시 종료합니다. 찾으려는 항목을 발견하는 즉시 검색을 완전히 멈추고 싶을 때, 2차원 데이터 구조를 검색하는 데 특히 유용합니다.

challenge icon

챌린지

쉬움

이 챌린지에서는 2차원 그리드를 검색할 때 레이블이 지정된 break 문을 사용해 중첩 루프를 빠져나오는 연습을 합니다. 그리드에서 특정 숫자를 찾아, 찾는 즉시 검색을 중단해야 합니다.

다음 두 가지 입력을 받습니다.

  • "rows,cols" 형식의 그리드 차원을 나타내는 문자열(예: "3,4")
  • 검색할 대상 숫자를 나타내는 문자열(예: "7")

다음과 같은 숫자 2차원 그리드가 제공됩니다.

grid := [][]int{
    {1, 2, 3, 4},
    {5, 6, 7, 8},
    {9, 10, 11, 12},
}

해야 할 일은 다음과 같습니다.

  1. 위 코드에서 이미 읽어 둔 값인 rows와 cols(검색할 그리드의 범위), target, grid를 사용합니다.
  2. 레이블이 지정된 break를 사용하는 중첩 루프로 그리드를 검색합니다.
  3. 대상 숫자를 찾으면 "Found [target] at position ([row], [col])"을 출력하고, 레이블이 지정된 break를 사용해 두 루프를 즉시 빠져나옵니다.
  4. 대상을 찾지 못한 채 검색을 마치면 "Target [target] not found"를 출력합니다.

위치는 0부터 시작하는 인덱스로 표시해야 합니다(첫 번째 행은 0, 첫 번째 열은 0).

직접 해보기

    // TODO: 아래에 코드를 작성하세요
    // 레이블이 붙은 break와 중첩 반복문을 사용해 대상을 찾으세요
quiz icon실력 점검

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

로직 & 흐름의 모든 레슨

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