스닥
Playground
스닥
전체 방문자
오늘
어제
  • 분류 전체보기 (125)
    • 개발자 기본기 (1)
    • Swift 아키텍처 (6)
    • iOS 개발 (55)
      • Swift (12)
      • UIKit (17)
      • SwiftUI (9)
      • CoreData (9)
      • MusicKit (4)
      • WebKit (2)
      • 개발 환경 (0)
      • WatchOS (2)
    • 애플 개발자 아카데미 (4)
    • 막 쓰는 개발일지 (0)
    • 운영체제 (4)
    • 네트워크, 서버 (16)
      • Network (9)
      • Server (7)
    • 알고리즘 (8)
    • C언어 (7)
      • 함수 (7)
    • 하루 이야기 (23)

블로그 메뉴

  • GitHub계정
  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • struct class 성능
  • 알고리즘
  • core data
  • docker
  • 자료구조
  • 도커
  • BFS
  • swift performance
  • dfs
  • C 언어
  • ios rendering
  • 문자열 복사
  • ip주소
  • Server
  • 서버
  • 너비 우선
  • Core Animation
  • 트리
  • 깊이 우선
  • SWIFT

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
스닥
iOS 개발/Swift

[Swift] 지정한 For-Loop 탈출하기

iOS 개발/Swift

[Swift] 지정한 For-Loop 탈출하기

2022. 10. 3. 11:40

Swift로 알고리즘을 풀어보면서 파이썬만큼은 아니지만 편리한 도구들을 많이 마련해 놓았다는 생각이 드는데요. 오늘은 그 중에서 지정한 For-Loop 를 한번에 break 하는 방법을 소개드리려고 합니다 :)

 

사실 이런 것들은 있는 줄 몰라서 못쓰는 것들이 대부분이잖아요? 이런 도구들을 틈틈히 정리해보려고 합니다!

 

그냥 아무런 쓸 때 없는 3중 For-Loop를 만들어볼게요.

for i in 1...10 {
// 첫번째 Loop
    for j in 1...10 {
    // 두번째 Loop
        for k in 1...10 {
        // 세번째 Loop
            print(i, j, k)
        }
    }
}

 

여기서 만약에 특정 조건일 때 두번째 Loop에서 break 하고 싶으면 어떻게 해야 할까요?

여기서는 i, j, k가 모두 같을 때 break한다고 해볼게요!

 

저는 예전에는 breakFlag라는 Bool 값을 만들어서, 해당 for문까지 종료를 해주곤 했었는데요.

이렇게요!

 

for i in 1...10 {
    var breakFlag = false // break Flag는 첫번째 for문에서 초기화된다.
    for j in 1...10 {
        for k in 1...10 {
            print(i, j, k)
            if i == j && j == k {
                breakFlag = true // 조건이 일치하면 true로 바꿔주고 세번째 for문 종료
                break
            }
            if breakFlag { break } // true로 바뀌었기 때문에 상위 두번째 for문도 종료된다.
        }
    }
}

 

 

하지만 이렇게 번거로운 작업 없이도 한번에 밖의 for문을 종료시키는 방법이 있습니다.

 

바로 Loop레이블을 사용하는 방법인데요.

 

Loop레이블로 Loop에 이름을 붙인 후 해당 Loop를 바로 종료시킬 수 있는 방식입니다.

한번 보여드릴게요!

 

다음과 같이 Loop의 이름을 지정하고, 지정한 Loop 이름을 break 뒤에 붙이면 해당 Loop를 종료시킬 수 있어요.

firstLoop:
for i in 1...10 {
secondLoop:
    for j in 1...10 {
    thirdLoop:
        for k in 1...10 {
            print(i, j, k)
            if i == j && j == k {
                break secondLoop
            }
        }
    }
}

 

 

별거 아니지만, 일일히 변수 만들거나 조건 붙여서 끝내는 것보다 훨씬 간단하고 빠른 방법인 것 같습니다ㅎㅎ

'iOS 개발 > Swift' 카테고리의 다른 글

[ARC] 성능을 위해 unowned를 꼭 써야할까?  (0) 2023.02.03
[ARC] Lazy 변수 클로저에서 Unowned 캡처가 항상 안전할까?  (0) 2023.02.02
[Concurrency] Semaphore로 비동기적 이벤트를 동기적으로 발생시키기  (0) 2023.01.20
[ARC] 약한참조(Weak, Unowned)에 대해서  (0) 2022.11.06
[Swift] Stride 함수를 사용하자  (0) 2022.10.02
[Swift] appDelegate 참조 안전하게 하기  (0) 2021.11.10
[Swift] lazy 변수란? - 애플개발자 문서가 수정됐다!  (0) 2021.09.06
[Swift] 프로토콜(Protocol)을 가장 기초부터  (2) 2021.09.02
    스닥
    스닥
    https://github.com/feldblume5263

    티스토리툴바

    단축키

    내 블로그

    내 블로그 - 관리자 홈 전환
    Q
    Q
    새 글 쓰기
    W
    W

    블로그 게시글

    글 수정 (권한 있는 경우)
    E
    E
    댓글 영역으로 이동
    C
    C

    모든 영역

    이 페이지의 URL 복사
    S
    S
    맨 위로 이동
    T
    T
    티스토리 홈 이동
    H
    H
    단축키 안내
    Shift + /
    ⇧ + /

    * 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.