STUDY 526

[LeetCode] 235. Lowest Common Ancestor of a Binary Search Tree, C++

https://leetcode.com/problems/lowest-common-ancestor-of-a-binary-search-tree/submissions/ Lowest Common Ancestor of a Binary Search Tree - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 이진 탐색 트리에서 가장 가까운 공통 조상을 찾는 문제이다. 알고리즘 순서는 다음과 같다. 1. 주어진 root를 시작으로 BFS를 진행한다. 1-1. 이 때 unorde..

STUDY/Algorithm 2022.08.13

Swift 문법 기초 8

예외 Error 프로토콜을 사용해서 표현함 주로 열거형을 사용해서 오류의 종류를 나타냄 enum ErrorName: Error { case case1 case case2 case case3 } 예외 발생 오류 발생의 여지가 있는 메서드는 throws를 사용해서 오류를 내포하는 함수임을 표시함 예시 class VendingMachine { // skip func receiveMoney(_ money: Int) throws { guard money > 0 else { throw VendingMachineError.invalidInput } self.deposited += money } func vend(numberOfItems numberOfItemsToVend: Int) throws -> String { ..

STUDY/Swift & iOS 2022.06.27

Swift 문법 기초 7

타입 확장 프로토콜 구현해야 할 요구사항을 정의하는 문법 프로토 타입을 제시하는 것이므로 기능을 직접적으로 구현하지 않음 protocol Protocol1 { // property var var1: Int { get set } var var2: String { get } //method func func1() // initializer init(var1: Int, var2: String) } 프로퍼티 요구: 항상 var 키워드 사용 get, set을 모두 명시하면 읽기 쓰기 모두 가능한 프로퍼티 get은 읽기만 가능해도 상관 없음 메서드 요구 이니셜라이저 요구 채택과 준수 채택(adopted): 구조체, 클래스, 열거형에서 프로토콜을 사용하는 것 준수( conform): 프로토콜을 구현하는 것 struc..

STUDY/Swift & iOS 2022.06.27

Swift 문법 기초 6

옵셔널 심화 옵셔널체이닝 매번 nil을 확인하지 않고 최종적으로 원하는 값이 있는지 없는지 확인할수 있음 class Person { var name: String var job: String? var home: Apartment? init(name: String) { self.name = name } } class Apartment { var buildingNumber: String var roomNumber: String var `guard`: Person? var owner: Person? init(dong: String, ho: String) { buildingNumber = dong roomNumber = ho } } let dg: Person? = Person(name: "Donggun") le..

STUDY/Swift & iOS 2022.06.25

Swift 문법 기초 5

프로퍼티 구조체, 클래스, 열거형 내부에 구현할수 있음 열거형 내부에는 연산 프로퍼티만 가능 프로퍼티의 종류 struct Student { var name: String = "dg" // 인스턴스 저장 프로퍼티 var koreanAge: Int = 1 var westernAge: Int { // 인스턴스 연산 프로퍼티 get { return koreanAge - 1 } set { koreanAge = westernAge + 1 } } } 인스턴스 저장 프로퍼티: 인스턴스 내부에 저장된 변수 인스턴스 연산 프로퍼티: 인스턴스 내부에 있는 변수이고 연산을 통해 다른 값을 가져오고 세팅할수 있는 변수 get 만 있는 경우 읽기전용 프로퍼티로 사용 struct Student { static var descrip..

STUDY/Swift & iOS 2022.06.21

Swift 문법 기초 4

사용자 정의 타입 구조체 value 타입 struct Sample { // instance property var mutableProperty: Int = 100; let immutableProperty: Int = 200; // type property static var typeProperty: Int = 100; // 인스턴스 메서드 func instanceMethod() { print("instance method") } // 타입 메서드 static func typeMethod() { print("type method") } } 가변 인스턴스로 선언하면 가변 프로퍼티는 변경 가능, 불변 프로퍼티는 변경 불가능 불변 인스턴스로 선언하면 가변 프로퍼티도 변경 불가능 인스턴스 메서드: 인스턴스를 선언..

STUDY/Swift & iOS 2022.06.20

Swift 문법 기초 3

옵셔널 값이 있을수도 없을수도 있음 let opt: Int? = nil nil 가능성이 있는 곳에서 직접 확인 하지 않아도 사용할수 있음 nil 가능성을 문서나 주석으로 남기지 않아도됨 예시) func func1(optParam: Int?) {} func func2(param: Int) {} func1(optParam: nil) // ok func2(param: nil) // error optional = enum + general enum Optional : ExpressibleByNilLiteral { case none case some(Wrapped) } let optVal: Optional = nil // 원형 let optVal2: Int? = nil // 가능 ?: 옵셔널 기존 변수처럼 사용할..

STUDY/Swift & iOS 2022.06.13

Swift 문법 기초 2

조건문 if-else 구문 if 조건 { } else if 조건2 { } else { } 조건문에 괄호를 쳐도 되고 안쳐도 됨 switch 구문 switch 비교값 { case 패턴: /* 실행 구문 */ default: /* 실행 구문 */ } break를 명시하지 않아도 case 마다 break case 내부에 실행 가능한 코드가 반드시 위치해야함 default 구문은 반드시 작성해야함 fallthrough 키워드를 사용해서 break를 무시할수 있음 , 나 범위 연산자 등으로 여러 패턴을 명시할수 있음 반복문 for - in for item in items { /* 실행 구문 */ } 파이썬과 비슷함 while while 조건 { } 조건에 숫자가 들어가면 에러. Bool 값 필요 repeat-wh..

STUDY/Swift & iOS 2022.06.09

Swift 문법 기초 1

https://yagom.net/courses/swift-basic/ 기초 개념 Naming Rule (이름짓기 규칙) lowerCamelCase Function method variable constant UpperCamelCase Type(class, struct, enum, extension) 콘솔로그 print: 단순 문자열 출력 dump: 인스턴스의 자세한 설명(description)까지 출력 String Interpolation (문자열 보간법) \() : 프로그램 실행 중 문자열 내 변수 또는 상수의 실질적인 값을 표현하기 위해 사용 ex) print(“Hello \(name)!”) 상수와 변수 let: 상수 선언. 변경 불가능 let name: String = “dg” let name = ..

STUDY/Swift & iOS 2022.06.07

[백준] 3649 로봇 프로젝트 python

https://www.acmicpc.net/problem/3649 3649번: 로봇 프로젝트 각 테스트 케이스마다 한 줄에 하나씩, 구멍을 완벽하게 막을 수 있는 두 조각이 없다면 'danger'를 출력한다. 막을 수 있는 경우에는 'yes ℓ1 ℓ2'를 출력한다. (ℓ1 ≤ ℓ2) 정답이 여러 개인 경우에 www.acmicpc.net 투 포인터 문제이고 어렵진 않았다. 다만, try except를 사용해서 에러를 캐치해야하는게 별로 좋지 않은 문제인듯 하다. import sys; input = sys.stdin.readline def main(): while(1): try: # 0 input x = int(input()) * 10**7 n = int(input()) nums = [int(input())..

STUDY/Algorithm 2022.05.23