목록전체 글 (54)
Olive Study Room

테스트 케이스의 종료 지점이 없을 때! 무한정 input을 받아야 할 때! ( = 프로그램 종료 시점이 명시되어있지 않은 경우) 이 경우 while true를 조건으로 하면 무한루프가 돌아 런타임 에러가 나는데...! 'EOF(End Of File)' 를 사용해서 멈춰야한다. swift에서 입력은 readline() 메소드를 통해서 받는데, 이 메소드를 살펴보면 readLine(strippingNewline:) 최신 line의 끝을 통하거나 EOF에 도달할 때까지를 표준 input으로 읽어 문자열을 반환한다. Declaration func readLine(strippingNewline: Bool = true) -> String? Parameters strippingNewline true라면 newline..

더보기 control flow를 다시 정리하게 될 줄이야.. 생각보다 swift에는 다양한 control flow가 존재했다.. Control Flow for, while -> 한 작업을 오랜 시간에 걸쳐 반복 수행 if, switch -> 특정 조건에 따라 분기시켜 실행 break, continue, fallthrough -> 실행 흐름을 다른 부분으로 이동 [ for ] for, for-in 1. for 2. for-in - 일반적인 사용 for _ in 1...5 { print("dev") } //dev //dev //dev //dev //dev let index: [Int] = [1, 2, 3, 4] for i in 0...index.count-1 { print(index[i]) } //1 //2..
stride(from:to:by:) 시작 value부터 to value까지의 시퀀스를 반환하는데, 마지막 value는 포함하지 않고 지정된 양만큼씩 뛰어넘는다. Declaration func stride(from start: T, to end: T, by stride: T.Stride) -> StrideTo where T : Strideable Example for i in stride(from: 1, to: 5, by: +1) { print(i) } //1 //2 //3 //4 -> 이처럼 마지막 인덱스틑 출력이 되지 않는다! 포함할 수는 없을까? stride(from:through:by:) 시작 value에서 마지막 value까지의 시퀀스를 만환하는데, 마지막 value를 포함하여 지정된 양만큼 뛰어..

더보기 알고리즘 문제풀이를 시작하며.. 단계별 풀이를 진행하며 초반에는 막힐 때마다 해당 내용에 대해 찾아보기로 하고 복잡한 알고리즘 문제를 풀기 전에는 내용에 대한 공부를 미리 하기로 한다. [ 10171 - 고양이 ] swift5 이후 버전에서는 #와 "의 조합으로 특수문자 표현이 가능하다. 여러 줄의 문자열을 String으로 변환할 때는 따옴표 세개(""")를 사용한다. let cat = #""" \ /\ ) ( ') ( / ) \(__)| """# [ 1000 - A+B ] swift는 project파일이나 playground에서 입력을 받을 수 없다. (샌드박스(https://zeddios.tistory.com/432) 때문.. 추후 정리 예정) command Line Tool에서 실행해야한다...
더보기 매 프로젝트에서 사용은 해왔지만 영문도 모르고 받아 적기만 했던 고차함수. 한번 정리해보자! 고차함수란? 매개변수로 함수를 받거나 함수를 반환하는 함수 map, filter, reduce 등이 있다. 위 함수는 swift 표준 라이브러리에 속한다. 1. map(_:) 시퀀스의 요소를 통해 지정된 클로저를 맵핑한 결과가 포함된 배열을 리턴한다. Declaration func map(_ transform: (Element) throws -> T) rethrows -> [T] Parameters transform : 맵핑 클로저. 파라미터처럼 이 시퀀스의 요소에 접근하고, 같거나 다른 타입의 변형된 값을 리턴한다. * 클로저 내에 생략할 수 있는 값 let text: [Int] = [1, 2, 3, 4..
더보기 백준 알고리즘 문제를 풀다가 입력을 받아 사칙연산을 한 결과를 반환하는 문제가 있었다. readline() 메소드는 입력한 한 줄을 받아오게 되는데, 이 때 연산을 위해 숫자를 찢어줘야한다. 찢는 메소드는 여러가지가 있지만, 두 가지만 알아보자. [ components(separatedBy:) ] 주어진 separator에 의해 분할된 리시버에서 substring들을 포함하는 문자열을 리턴한다. * substring : 문자열 조각 Declaration func components(separatedBy separator: CharacterSet) -> [String] Parameters separator(리시버를 나눌 때 사용할 character를 포함하는 문자 집합. nil이 아니여야한다) Ex..
Class object의 템플릿. 데이터필드와 메소드 필드를 갖는다. object 클래스의 인스턴스 선지식..! OOP (Object Oriented Programming) 객체 지향 프로그래밍 문제를 여러 개의 객체 단위로 나누어 작업하는 것 공장에 설계도를 만들어(=클래스) 인스턴스(객체)를 찍어내는 방식. OOP는 절자치향(C언어와 같은)에 비해 사람의 사고방식처럼 유기적인 관계로 프로세스가 진행된다. OOP의 특징 1. Encapsulation(캡슐화) 객체의 특정한 목적을 위한 변수나 메소드를 하나로 묶는 것 클래스를 만들 때 추후 특정한 목적을 잘 수행할 수 있도록 변수와 메소드를 관련성있게 구성해야 한다. 캡슐화의 목적은 정보 은닉이다! * 정보 은닉이란? getter와 setter로 메서드..

https://pengcoder.tistory.com/22?category=427332 GCD? (Dispatch Queue & OperationQueue) 앞서 알아야 할 개념 연산 대기열 (Operation Queue) : 비동기적으로 실행되어야 하는 작업을 객체 지향적인 방법으로 사용 종속성 (Depedency) : A작업이 끝나면 B작업을 수행해야하는 관계 [ GCD ] Grand Cen pengcoder.tistory.com 위 포스팅에 이은 추가 개념! [ Sync & Async ] Sync : 순차적 처리(동기적) Async : 동시적 처리(비동기적) 그렇다면.. Sync와 Serial Queue, Async와 Concurrent Queue는 뭐가 다른가...?!?!? 1. 먼저, Sync와..