[TIL] Switch문, 삼항연산자, 데이터구조

2023. 3. 26. 15:41·Swift/문법
728x90

Switch와 if 사용하는 이유

  1. switch문장은 완전하다, 즉 이 문장은 case 체크 할 수 있는 모든 값의 블록 또는 사용자가 가지고 있어야 한다. default, if, else if는 놓칠 수 있다.
  2. 여러 개의 가능한 결과에 대한 값을 확인하려면 해당 값은 한번만 읽히지만 if는 여러번 읽는다. 함수 호출의 일부는 속도가 느려질 수 있기 때문에 함수 호출을 사용하기 시작할때 기능이 중요하다.
  3. 다루기 어려운 고도의 패턴 매칭을 가능하게 한다.

추가로 3개이상의 동일한 값을 체크하고 싶다면 사용하기도 한다.

Switch 문장은 처음에 확인해야 할 어떤 값이 필요하다.

default: 모든 case 값이 일치하지 않을 때 실행되는 코드 블록이다.

코드 예시

int num = 3;
String result = "";

switch(num) {
  case 1:
    result = "One";
    break;
  case 2:
    result = "Two";
    break;
  case 3:
    result = "Three";
    break;
  default:
    result = "Unknown";
    break;
}

System.out.println(result);

위 코드에서, 변수 num 값이 3이므로 case 3이 실행되어 result에 "Three"가 할당됩니다. 그리고 break 키워드를 통해 switch문을 종료합니다. 마지막으로 result 값인 "Three"이 출력됩니다.

삼항연산자

삼항 연산자는 Swift 언어에서도 사용할 수 있습니다. 다음은 Swift 언어에서 삼항 연산자를 사용한 코드 예시입니다.

let num = 5
let result = (num > 0) ? "양수입니다." : "음수입니다."
print(result)

위 코드에서, 변수 num 값이 5이므로 num > 0 조건식이 참입니다. 따라서 (num > 0) ? "양수입니다." : "음수입니다." 표현식의 결과는 "양수입니다."가 됩니다. 마지막으로 "양수입니다."가 출력됩니다.

데이터 구조와 중요성

  • 데이터구조
    • 효율성
    • 유지 보수성
    • 데이터 활용을 위한 체계화 방법

데이터 구조 + 알고리즘 = 프로그램

  • 데이터 추상화(abstraction)기법
    • 데이터가 지닌 복잡성을 관리하기 위한 기술
    • 데이터 구조를 디자인
    • 내부의 구현방식을 몰라도 되도록 하기 위함, 개발자는 알고리즘이 제공하는 인터페이스의 활용에 집중할 수 있다.
    • 문제를 해결하기 위한 패턴

스위프트 REPL

  • 스위프트 컴파일러(Read-Eval-Print-Loop)
    • 즉시 코드를 실행하고 결과를 도출
    • 값을 별도로 할당하지 않았을때 REPL이 직접 $R0라는 변수를 생성해서 값을 할당

기본적인 데이터 구조

  • 배열 & 포인터
  • 인접 데이터 구조: 데이터 메모리 영역중 인접한 부분에 저장(ex. 배열,힙,매트릭스,해시 테이블)
  • 연결 데이터 구조: 서로 명확히 구분되는 메모리 영역을 차지하되 포인터라는 주소 체계로 연결, 관리 되는 구조(ex. lists, trees, graphs)

인접 데이터 구조(Contiguous data structures)

  • 선형 데이터 구조(one-dimensional array)
  • 일정한 순서에 따라 개별 데이터 요소에 접근가능한 인덱스기반의 데이터 구조

배열

  • 선형 배열
  • 다차원 배열
    • 행렬(matrix) : 2차원 배열을 구현
     

배열

배열 선언

  • Array<Type>형식 사용
  • 축약형인 [Type]형식을 사용
  • 명시적으로 선언하지 않고 컴파일러가 추측(type inference)하게 하는 방법
  • var myIntArray : [Int] = [] 배열요소가 없는 배열 선언
  • var my2DArray: [[Int]] = [[1,2],[10,11],[20,30]] 이차원 배열

배열 요소 가져오기

  • 배열 내부의 요소를 가져오는 방법은 여러가지
  • 해당 요소의 인덱스 번호를 안다면 직접 호출 가능
  • 순환문을 이용해서 특정 요소를 반복적으로 가져와야 할 때 for…in 문법을 사용
  • 일정 영역에 속한 요소를 가져와야 할 때도 있는 범위를 지정해서 가져온다.
//2차원 배열에서 특정 배열 요소를 직접 가져오는 방식
1> var my2DArray: [[Int]] = [[1,2],[10,11],[20,30]]
my2DArray: [[Int]] = 3 values {
[0] = 2 values {
	[0] = 1
	[1] = 2
	}
[1] = 2 values {
	[0] = 10
	[1] = 11
	}
[2] = 2 values {
	[0] = 20
	[1] = 30
	}
}
2> var element = my2DArrau[0][0]
element: Int = 1
 3> element = my2DArray[1][1]
 4> print(element)

배열 요소 추가

  • 추가를 맨 앞, 끝 부분에 인지 따라 달라진다.

배열 요소 삭제

  • .remove
  • 배열 요소의 추가와 마찬가지로 삭제하려는 요소의 위치가 어떤 부부인지에 따라 달라진다

연결 데이터 구조(Linked data structures)

  • 데이터 타입과 이를 다른 데이터와 묶어주는 포인터(메모리상의 위치 주소)로 구성
  • 연결리스트
    • 데이터와 다음 노드에 연결할수 있는 정보를 포함
    • 추가 링크 정보를 통해 연결된 데이터에서 앞 또는 뒤로 이동,
    • 추가 노드를 삽입하거나 삭제하는 일은 매우 간단
    • 자체 참조 클래스인 노두로 구성,각각의 노드는 데이터와 전체 연결데이터에서 다음 노드로 이동할 수 있는 링크 정보를 포함
    • S: 단일연결리스트, N: 단일연결리스트의 마지막부분, D: 이중연결리스트 좌측(이전의 노드), 우측(다음노드)

연결리스트

단일 연결 리스트

  • 연결 리스트 데이터 구조는 앞서 정의한 네 개의 속성으로 구성,
class LinkedList<T> {
	var item
	var next: LinkedList<T>?
}

데이터 구조의 종류와 장단점

728x90

'Swift > 문법' 카테고리의 다른 글

[TIL] 점근적 분석 & 사업계획서  (0) 2023.03.29
[TIL] 기본 연산자(Basic Operators) & 데이터 구조  (0) 2023.03.28
[TIL] Swift 문법(contains, allSatisfy)  (0) 2023.03.19
[TIL] iOS App 개발자는 무엇일까  (0) 2023.03.14
[TIL] 겸손함(애플 디벨로퍼 아카데미생분들 모임)  (0) 2023.03.11
'Swift/문법' 카테고리의 다른 글
  • [TIL] 점근적 분석 & 사업계획서
  • [TIL] 기본 연산자(Basic Operators) & 데이터 구조
  • [TIL] Swift 문법(contains, allSatisfy)
  • [TIL] iOS App 개발자는 무엇일까
bulmang
bulmang
모바일 개발자 도전
  • bulmang
    bulmang
    bulmang
  • 전체
    오늘
    어제
    • 분류 전체보기 (205)
      • 알고리즘 (65)
        • List (3)
        • Two Pointer (6)
        • Binary Search (4)
        • Prefix Sum (3)
        • Sort (4)
        • Brute Force (5)
        • Array (2)
        • String (4)
        • 프로그래머스 (12)
        • 백준 (9)
        • Queue (2)
        • Stack (2)
        • Recursion (9)
      • Computer Science (16)
        • Computer Architecture (6)
        • Operating System (5)
        • Network (2)
        • 기타 (2)
        • System Programming (1)
      • Swift (70)
        • 개발 (24)
        • 정리 (25)
        • 문법 (20)
      • Flutter (24)
      • 기타 (12)
        • 후기 (12)
      • Git (6)
      • Ios 오픈소스 (5)
      • UI 디자인 (5)
      • AppleScript (2)
  • 링크

    • Notion
    • Github
  • 태그

    Xcode
    백준
    컴퓨터구조
    Apple Developer Academy
    Swift
    til
    IOS
    피플
    개발
    SwiftUI
    Java
    알고리즘
    코딩테스트
    프로그래머스
    FLUTTER
    today i learned
    문법
    자료구조
    riverpod
    협업
  • 최근 댓글

  • 최근 글

  • 인기 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.2
bulmang
[TIL] Switch문, 삼항연산자, 데이터구조
상단으로

티스토리툴바