티스토리 뷰

TIL

TIL ('21.03.22)

learner._.Kio 2021. 3. 22. 23:45

학습내용

프로젝트

팀그라운드룰 작성 - Steven, SJ, Ki

계산기 프로젝트 관련 공부할 내용사이트

논리게이트

Over Flow의 이해

Stack 자료구조의 이해와 구현

  • 스택(Stack)이란?
  • 스택이란 자료구조는 사전적 정의인 '쌓다' '더미' 와 같습니다. 쉽게 설명하자면, 밑이 막힌 상자를 생각하시면 됩니다. 밑이 막혔으니 위로만 물건을 집어 넣을 수 있고, 뺄 수가 있겠죠? 이러한 구조 때문에 먼저 들어온 물건은 나중에 나갈 수 있고, 나중에 들어온 물건은 먼저 나갈 수 있게 됩니다. 이러한 구조를 '선입후출' '후입선출' 이라고 합니다.
  • first in-last out
    • 먼저 쌓인 데이터가 나중에 나간다.
    • ex) 뒤로가기 버튼
  • 스택 사용법
    1. 삽입 (Push)
    2. 삭제 (Pop)
    3. 읽기 (Peek)
  • Stack의 구현 방법
    1. 배열
      • 장점
        1. 구현 간단
        2. 원하는 데이터의 접근속도 빠름
      • 단점
        1. 데이터 최대 개수를 미리 정해야 한다.
        2. 데이터의 삽입 및 삭제에 있어 비효율적 - 시간적, 비용적 손해
    2. 연결리스트
      • 장점
        1. 데이터 최대 개수 한정 X
        2. 데이터의 삽입 및 삭제 용이(연결리스트의 구조는 배열과 다르게 데이터들이 순차적으로 나열X)
      • 단점
        1. 원하는 데이터의 접근이 불가능 - 연결되어 있는 링크를 따라 차근차근 하나씩 확인하며 데이터를 찾아야 하기 때문
    배열은 데이터 양이 많지만 삽입/삭제가 거의 없고, 데이터의 접근이 빈번히 이뤄질 때 유리합니다. 반대로 연결리스트는 삽입/삭제가 빈번히 이뤄지고, 데이터의 접근이 거의 없을 때 유리합니다. 각각의 상황에 맞게 배열을 사용할지, 연결리스트를 사용할지는 개발자의 몫인 것 같습니다.
  • 참고사이트

자료구조의 예 - 나무위키

MVC

[iOS] MVC 패턴에 대해 알아보자

  • MVC 패턴은 Apple에서 기본적으로 지원하는 디자인 패턴으로 Model + View + Controller 구조의 아키텍터 패턴이다.
    • Model: 앱은 데이터와 비즈니스 로직을 가지고 있다.
    • View: 사용자에게 데이터를 보여주거나 UI를 담당한다.
    • Controller: Model과 View의 중간다리 역할로 View로부터 사용자의 action을 받아 Model에게 어떤 작업을 해야하는지 알려주거나, Model의 데이터 변화를 View에게 전달하여 View를 어떻게 업데이트할지 알려준다

Singleton

  • 싱글톤 패턴이란 특정용도로 객체를 1개 생성하여 공용으로 사용하고 싶을 때 사용하는 방법이다.
  • 주로 환경설정, 로그인 정보 등을 특정용도로 생성해둔 객체에 넣어두고 여러객체에서 접근 가능하도록 하여 데이터를 사용하는 것이다. 이 객체는 임의로 메모리에서 해제해주지 않는 이상 프로그램이 실행되고 끝날 때까지 메모리에 유지된다.
  • 단 하나의 인스턴스를 생성해 사용하는 디자인 패턴으로, 전역 변수처럼 전역 인스턴스 형태로 사용이 가능하다. 인스턴스가 필요할 때 기존의 인스턴스를 사용한다.
  • 참고사이트

알고리즘

  • 문제해결을 위한 절차/방법
  • 대표적 알고리즘 - 정렬, 탐색, 재귀 등
  • 여러가지 알고리즘이 있고, 데이터의 양, 데이터 처리방법에 따라 다른 방법을 선택하기도 한다. 우위라는 건 존재하지 않는다.
  • 어떠한 문제를 해결하기 위한 여러 동작들의 모음
    • 양말
    • 세면도구
    • 신발
  • ex) 여행가방 싸기

자료구조

  • 자료를 효율적으로 이용할 수 있는 방법론
  • 데이터를 구조적으로 표현하는 방식
    • 장단점을 가지고 있기 때문에 상황에 맞게 사용한다.
    ex) 테트리스

자료구조 - 원시구조 / 선형구조 / 비선형구조

  • 원시구조
    • 정수, 실수, 문자
  • 선형구조
    • 배열, 연결 리스트, 스택, 큐, 덱
  • 비선형구조
    • 트리, 그래프

자료구조 - 물리적 구조 / 추상적 구조

  • 물리적 구조
    • 정수, 실수, 문자
    • 배열, 연결 리스트
  • 추상적 구조
    • 스택, 큐, 덱, 트리, 그래프

배열의 장점

  • Int, String, Double 정해진 자료형만 들어간다.
  • 칸/방은 지정되어 있다.
  • 가장 간단하고 빠른 자료구조의 형태

배열의 단점

  • 칸 수가 정해져 있다.
  • 한 번 만들어놓으면 칸만큼 메모리를 차지하고 있다.

연결리스트

  • 단순 연결 리스트
  • 이중 연결 리스트
  • 원형 연결 리스트 

스택(Stack)

  •  스택이란 자료구조는 사전적 정의인 '쌓다' '더미' 와 같습니다. 쉽게 설명하자면, 밑이 막힌 상자를 생각하시면 됩니다. 밑이 막혔으니 위로만 물건을 집어 넣을 수 있고, 뺄 수가 있겠죠? 이러한 구조 때문에 먼저 들어온 물건은 나중에 나갈 수 있고, 나중에 들어온 물건은 먼저 나갈 수 있게 됩니다. 이러한 구조를 '선입후출' '후입선출' 이라고 합니다.
  • first in-last out
    • 먼저 쌓인 데이터가 나중에 나간다.
    • ex) 뒤로가기 버튼

큐(Queue) - 대기열

  • first in-first out
  • ex) 은행에 먼저 간 사람이 먼저 일을 본다.

덱(Dequeue)

트리(Tree)

그래프(Graph)

트리 vs 그래프

  • 트리: 선이 겹쳐지지 않는다.
  • 그래프: 시작과 끝이라는 게 없다.

정렬 알고리즘

  • 선택정렬 - O(n²)
  • 버블정렬 - O(n²)
  • 삽입정렬 - O(n²)
  • 병합정렬 - O(nlogn)
  • 퀵정렬 - O(nlogn)
  • 항상 빠른 건 아니지만, 대체적으로 빠른 편이다.

시간복잡도

  • 알고리즘이 실행되는데 소요되는 시간분석
  • 점근 표기법(대문자 O 표기법)

탐색 알고리즘의 시간복잡도

  • 선형 탐색- O(n)
  • 이진 탐색 - O(logn)

수업

야곰의 잔소리

  • TIL 꾸준히 쓰자
  • 체력 관리 잘하자
  • 시간을 꼭 따로 빼두고 하자!
    • 기록하는 시간이 중요하다.
    • 금요일 - TIL, 일일회고, 주간회고, 프로젝트 회고

Kahoot

  • 복습
    • iOS 환경에서 Model과 View 사이의 중재자 역할을 하도록 구현된 타입의 종류를 지칭하는 용어는? Controller
    • KVO와 Notification은 타입 사이의 결합도를 낮출 수 있다.
      • 결합도?
      • 응집도?
    • 코코아터치 환경에서 앱 전역에 노티피케이션을 관리하는 노티피케이션 센터를 불러오는 방법은? NotificationCenter.default
    • 인스턴스끼리 메서드를 호출하는 것은 메시지(Message) 를 보낸다고 표현할 수 있다.
    • 타입의 결합도를 낮추는 것은 유지보수를 위해 중요하다 True
    • 뷰 컨트롤러가 관리하는 뷰의 상태변화는 UIViewController 클래스의 메서드를 재정의(override)하여 파악할 수 있다.
    • 뷰의 생명주기 메서드 중, 여러번 실행될 수 있는 가능성을 내포하는 메서드를 모두 고르세요.
      • viewDidLoad
      • loadView
      • viewWillAppear O
      • viewDidAppear O
        • 엄밀히 따지면 4개 다 가능성을 내포하고 있다.

UML

코드를 설명할 때, 어떤 방식을 하나요?

  • 코드
  • 줄글
  • 도표 - 시각화, 도식화, 추상화

Language?

  • communication(의사소통)
  • structured and conventional(구조화된, 양식화된)

UML을 사용하는 유형 3가지

  1. 나 자신 -> 전체 구조 및 클래스 의존성 파악
  2. 같이 일하는 사람 -> 의사소통 및 설계 논의
  3. 미래에 이 프로그램을 맡을 사람(나 포함) -> 문서화
  • 구조 다이어그램 → 정적인 구조 : 한순간
    • Class Diagrams
  • 행위 다이어그램 → 동적인 구조 : 각 요소들 간의 변화와 흐름, 주고 받는 데이터들의 동작
    • Sequence Diagrams

문제점/고민한점 → 해결방안

모리가 아프다...나의 메모리가 😱 → 일단 공부를 해봐야할듯

더 공부 해볼 내용

  • 2진수 계산법
  • 리스트
  • 제네릭
  • 프로토콜
  • Delegation
  • Binary
  • Unit Test

 

'TIL' 카테고리의 다른 글

TIL ('21.03.25)  (0) 2021.03.26
TIL ('21.03.23)  (0) 2021.03.26
TIL ('21.03.18) - iOS View Life Cycle  (0) 2021.03.18
TIL ('21.03.17)  (0) 2021.03.17
TIL ('21.03.15)  (0) 2021.03.16
댓글