분류 전체보기

    [Swift] 옵셔널 체이닝

    [Swift] 옵셔널 체이닝

    📌 옵셔널 체이닝 옵셔널 체이닝은 구조체나, 클래스 옵셔널을 사용하는데 그 옵셔널이 또 옵셔널을 가질 때 즉, 연쇄적으로 옵셔널을 가지는 경우에 사용할 수 있다. 예를들어 아래와 같은 클래스가 있다고 하자. // 개인정보 class Person { var name : String var age : Int var phone : Phone? init(name : String, age : Int){ self.name = name self.age = age } } // 폰정보 class Phone { var number : String var type : Kind? init(number : String){ self.number = number } } // 폰종류 class Kind { var brand : St..

    [Python] 다이나믹 프로그래밍 (DP)

    [Python] 다이나믹 프로그래밍 (DP)

    다이나믹 프로그래밍의 핵심은 점화식과 memoization 이다. DP는 주로 bottom-up 방식을 사용하지만, top-down으로도 구현 가능하다. top-down은 재귀+memoization을 통해 구현한다. 대표적인 DP문제로, 피보나치 수열이 있다. https://www.acmicpc.net/problem/2748 2748번: 피보나치 수 2 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가 www.acmicpc.net 📍 피보나치 수의 점화식은 f(n) = f(n-1) + f(n-2) (n>=2) 📌 Bottom-Up ..

    [Python] 정렬함수 sort(), sorted() 활용

    정렬을 위해 사용하는 함수에 대해서 자세히 알아보자. 정렬함수는 내장함수고 리스트에서 사용가능하다. 📌 sort() 리스트를 정렬하고 싶을때 사용 (defalut는 오름차순) arr = [1,5,2,7,8,3,4,9,6] arr.sort() print(arr) # [1, 2, 3, 4, 5, 6, 7, 8, 9] 내림차순으로 정렬 arr = [1,5,2,7,8,3,4,9,6] arr.sort(reverse=True) print(arr) # [9, 8, 7, 6, 5, 4, 3, 2, 1] 📌 sorted() 리스트는 건들지 않지만, 정렬된 값이 필요할 때 사용 arr = [1,5,2,7,8,3,4,9,6] arr_sort = sorted(arr) print(arr) #[1, 5, 2, 7, 8, 3, 4..

    [Python] 알파벳 또는 숫자 확인 (isalpha , isdigit)

    파이썬은 참 좋은 함수가 많다. 이번에 사용해 볼 함수는 내가 검사하고자 하는 문자열이 알파벳인지, 숫자인지 알고싶을 때 사용하는 함수이다. 📌 알파벳 (isalpha) 문자, 문자열 모두 사용 가능하다. (한글도 가능) 단, 문자열에서는 문자가아닌것이 한개라도 있으면 flase를 반환한다. (ex 특수문자, 숫자, 띄어쓰기) ex1 = "A" ex2 = "a" ex3 = "example" ex4 = "안녕" ex5 = "hi hello" ex6 = "hi123" print(ex1.isalpha()) #True print(ex2.isalpha()) #True print(ex3.isalpha()) #True print(ex4.isalpha()) #True print(ex5.isalpha()) #False ..

    [Swift] class 상속(Inheritance)

    [Swift] class 상속(Inheritance)

    상속은 오로지 '클래스' 에서만 가능하다. swift에서 상속은 한 번만 가능하다. (== 단일상속) 📌 기본구현 class Name : 상속받을class { // code } 📌 상속 상속을 예제를 앞세워 설명해보면, 이름과 나이를 프로퍼티로 가지고, 그 값을 출력하는 메소드를 가지는 클래스는 다음과 같다. class Info { var name = "" var age = "" func print_name() { print("내 이름은 \(name) 입니다.") } func print_age() { print("나는 \(age)살 입니다.") } } 위 클래스의 정보를 모두 가지면서 외국어로도 출력할 수 있게 하고싶다면 상속을 이용할 수 있다. 즉, 상속이란 다른 클래스의 정보를 모두 가지는 것을 의미..

    [Python] 최소힙(MIN heap) / 최대힙(MAX heap)

    [Python] 최소힙(MIN heap) / 최대힙(MAX heap)

    힙은 자료구조 트리를 사용하여 구현한다. 트리 중에서도 완전 이진트리이다. 최대 트리는 항상 부모가 자식보다 값이 크다. 최소 트리는 항상 부모가 자식보다 값이 작다. (자식끼리는 상관X) python으로 어떻게 구현할 것인가? 고민할 필요 없이 module을 쓰도록 하겠다. 최소(Min) heap python은 기본적으로 최소 heap을 구현할 수 있는 모듈을 제공한다. import heapq heap으로 선언하는 것은 아니고, 일반적인 배열을 heap으로 만들 수 있다. 예를 들어 정렬되지 않은 arr 배열을 heapify로 정렬할 수 있다. heapify(정렬할리스트) import heapq arr = [1,5,3,6,2] heapq.heapify(arr) print(arr) # [1,2,3,6,5..

    [Python] input 대신 sys.stdin.readline() 쓰자

    python으로 코딩테스트 (특히 백준) 풀다가 시간초과로 문제 겪은 분들은 속도 개선을 위해서 sys.stdin.readline()을 쓰자 input이 느린 이유 1 기존에 쓰던 input은 괄호안에 prompt message를 입력할 수 있습니다. name = input("이름을 입력하세요 : ") 그렇기 때문에 prompt message가 없는 readline()과 상대적으로 시간 차이가 발생합니다. input이 느린 이유 2 아래와 같이 입력 후 같은 문자열을 입력하면, import sys input = input() print(input) print("=====") readline = sys.stdin.readline() print(readline) print("=====") 다음과 같은 결과가..

    [Swift] property(프로퍼티)

    [Swift] property(프로퍼티)

    해당 포스팅은 아래 링크에서 값타입 & 참조타입을 먼저 학습한 후에 읽는 것을 권장합니다. https://990427.tistory.com/71 전 게시물들에서 클래스나 구조체에 쓰는 변수나 상수를 프로퍼티라고 불렀었다. 프로퍼티란 클래스, 구조체, 열거형에 관련된 값을 뜻한다. (대충 위에말도 맞음) 프로퍼티는 총 3가지 형태로 존재하는데, 하나씩 알아보도록 하자. Stored Property (저장 프로퍼티) 저장 프로퍼티는 말 그대로 값을 저장하는 프로퍼티를 의미한다. 우리가 익히 알고있는 class, struct안에 존재하는 변수나 상수는 기본적으로 저장 프로퍼티이다. class ex1 { let num = 0 var str = "hello" } struct ex2 { var num = 1 let..

    [Swift] 클로저(Closure)의 모든것

    [Swift] 클로저(Closure)의 모든것

    본 게시물은 클로저의 기본 부터 심화까지 모두 다루고 있습니다. swift 함수의 기본을 다루었다고 가정하고 작성했습니다. Closure / 클로저 클로저란? 보통은 익명함수를 뜻한다. 하지만 named 함수도 클로저에 속한다는 사실 ! 클로저는 named Closure & unnamed Closure 두가지를 포함하고 있다. 우리가 알고 있는 일반적인 함수는 named Closure이다. func NameClosure() { print("I have a name") } 익명함수는 정확히는 unnamed Closure이지만, 보통 unnamed을 생략하고 그냥 클로저라고 부른다. 즉, 클로저 = 익명함수라고 통상적으로 생각하면 될듯 ? ( 클로저는 익명함수이지만, 1급 객체 함수의 특성을 가진다. ) 요..

    [Swift] 열거형(Enumerations)

    보호되어 있는 글입니다.