요약 - 고급 루프 제어
Coddy GO 여정의 로직 & 흐름 섹션에 포함된 레슨 — 68개 중 5번째.
챌린지
쉬움이 챌린지에서는 레이블이 지정된 break 문을 switch 및 fallthrough와 결합하여 보안 모니터링 시스템을 만듭니다. 이 시스템은 여러 보안 구역에서 위협을 검색하고 계단식 경고 수준으로 분류합니다.
두 개의 입력을 받게 됩니다:
- 검색할 위협 수준을 나타내는 문자열 (예:
"high") - 검색할 최대 구역 수를 나타내는 문자열 (예:
"3")
다음과 같은 보안 구역 데이터가 제공됩니다:
zones := [][]string{
{"low", "medium", "low"},
{"medium", "high", "low"},
{"critical", "medium", "high"},
{"low", "critical", "medium"}
}수행해야 할 작업은 다음과 같습니다:
- 첫 번째 입력에서 위협 수준을 파싱합니다.
- 두 번째 입력에서 검색할 최대 구역 수를 파싱합니다.
- 레이블이 지정된
break와 중첩 루프를 사용하여 구역을 검색합니다. - 대상 위협 수준을 찾으면
"Threat found at zone [zone_number] position [position]"을 출력하고 레이블이 지정된 break를 사용하여 즉시 두 루프를 모두 종료합니다. - 위협을 찾은 후(또는 위협을 찾지 못한 경우),
switch문과fallthrough를 사용하여 검색 중이었던 위협 수준에 따른 보안 경고를 표시합니다.
switch 문은 다음과 같이 작동해야 합니다:
"critical"인 경우: "CRITICAL: Lockdown initiated!"를 출력하고 fall through하여 high 경고도 출력합니다."high"인 경우: "HIGH: Security breach detected!"를 출력하고 fall through하여 medium 경고도 출력합니다."medium"인 경우: "MEDIUM: Increased monitoring active"를 출력합니다."low"인 경우: "LOW: Standard security protocols"를 출력합니다.
지정된 수의 구역을 검색한 후에도 위협을 찾지 못한 경우, 보안 경고를 표시하기 전에 "Threat not found in searched zones"를 출력합니다. 구역 번호와 구역 내 위치에는 0부터 시작하는 인덱스를 사용하세요.
직접 해보기
package main
import (
"fmt"
"strconv"
)
func main() {
// 입력 읽기
var threatLevel string
var maxZonesStr string
fmt.Scanln(&threatLevel)
fmt.Scanln(&maxZonesStr)
// 최대 구역 수를 정수로 변환
maxZones, _ := strconv.Atoi(maxZonesStr)
// 보안 구역 데이터
zones := [][]string{
{"low", "medium", "low"},
{"medium", "high", "low"},
{"critical", "medium", "high"},
{"low", "critical", "medium"},
}
// TODO: 아래에 코드를 작성하세요
// 레이블이 지정된 break와 중첩 루프를 사용하여 위협을 검색하세요
// 위협을 찾으면 위협 위치를 출력하고, 찾지 못하면 "Threat not found in searched zones"를 출력하세요
// 그 다음 보안 경보를 위해 fallthrough가 포함된 switch를 사용하세요
}