본문 바로가기

전체 글

(426)
[Algorithm] [Python/Swift] Programmers - 오픈채팅방 programmers - 오픈채팅방 문제 설명 카카오톡 오픈채팅방에서는 친구가 아닌 사람들과 대화를 할 수 있는데, 본래 닉네임이 아닌 가상의 닉네임을 사용하여 채팅방에 들어갈 수 있다. 신입사원인 김크루는 카카오톡 오픈 채팅방을 개설한 사람을 위해, 다양한 사람들이 들어오고, 나가는 것을 지켜볼 수 있는 관리자창을 만들기로 했다. 채팅방에 누군가 들어오면 다음 메시지가 출력된다. "[닉네임]님이 들어왔습니다." 채팅방에서 누군가 나가면 다음 메시지가 출력된다. "[닉네임]님이 나갔습니다." 채팅방에서 닉네임을 변경하는 방법은 다음과 같이 두 가지이다. 채팅방을 나간 후, 새로운 닉네임으로 다시 들어간다. 채팅방에서 닉네임을 변경한다. 닉네임을 변경할 때는 기존에 채팅방에 출력되어 있던 메시지의 닉네임도..
[iOS] get, set, didSet, willSet in Swift get, set, didSet, willSet with Swift 본 내용을 살펴보기에 앞서 프로퍼티 값을 연산하여 저장하는 Computed Property에 대하여 미리 알고 있어야 한다. 이번 시간에는 Swift에서 프로퍼티 초기화에 있어 이용되는 get, set, didSet, willSet 에 대하여 알아보자! 각각의 키워드를 보면 대략적인 느낌이 오듯 이는 일반적으로 OOP 패러다임에서 사용하는 getter, setter 메서드다. 즉, 프로퍼티 값을 초기화하고 이를 가져오는 기능을 제공한다. get, set in Swift Swift 내에서 get,set 은 일반적으로 우리가 쓰는 getter, setter 와 매우 유사하다. 간단하게 예시를 살펴보도록 한다. var testProperty: ..
[Algorithm] [Python/Swift] Programmers - 다음 큰 숫자 Programmers - 다음 큰 숫자 문제 설명 자연수 n이 주어졌을 때, n의 다음 큰 숫자는 다음과 같이 정의 합니다. 조건 1. n의 다음 큰 숫자는 n보다 큰 자연수 입니다. 조건 2. n의 다음 큰 숫자와 n은 2진수로 변환했을 때 1의 갯수가 같습니다. 조건 3. n의 다음 큰 숫자는 조건 1, 2를 만족하는 수 중 가장 작은 수 입니다. 예를 들어서 78(1001110)의 다음 큰 숫자는 83(1010011)입니다. 자연수 n이 매개변수로 주어질 때, n의 다음 큰 숫자를 return 하는 solution 함수를 완성해주세요. 제한 사항 n은 1,000,000 이하의 자연수 입니다. 입출력 예 제출 코드 Python def solution(n): OneCount = bin(n).count(..
[iOS] [Swift] Stack과 Queue Stack & Queue with Swift Stack struct Stack { var stack = [T]() var isEmpty: Bool { return self.stack.isEmpty } var top: T? { return self.stack.last } mutating func push(_ item: T) { self.stack.append(item) } mutating func pop() -> T? { guard self.isEmpty == false else { return nil } return self.stack.popLast() } } LIFO, Array를 이용해 구현하였다. 다양한 자료형을 수용할 수 있도록 Generic을 이용하여 유연성을 더한다. push , pop 메서드..
[iOS] Generic in Swift Generic in Swift Generic? 많은 프로그래밍 언어에서 이용되는 개념 Generic은 Swift에서도 지원한다. 제네릭 코드는 코드를 더욱 유연하게 작성할 수 있고, 재사용이 가능한 함수와 타입을 지원하여 작업할 수 있도록 요구사항을 정의한다. 이를 통해 중복을 피하고, 의도를 명확히 하여 추상적인 방법으로 코드를 작성할 수 있다. 제네릭은 Swift에서 가장 강력한 기능 중 하나로 실제로 Swift 표준 라이브러리 대다수는 제네릭 코드로 만들어져있다. let strArr = [String]() let intArr = [Int]() Swift의 배열과 딕셔너리 타입은 제네릭 타입이다, 그렇기에 우리가 배열을 생성할 때 Int 값을 갖는 배열이나 String 값을 갖는 배열 또는 다른 타입..
[iOS] Observer Pattern in Swift Observer Pattern in Swift 오늘은 Swift Design Pattern 중 Observer Pattern에 관하여 알아보도록 한다! What is Observer Pattern? Observer, 내가 아는 옵저버는 스타크래프트에서 나오는 옵저버 뿐.. 이지만, 어떻게 보면 그 옵저버와 동일하다! Observer는 단어의 뜻 그대로 관찰자 역할을 한다. Observer Pattern은 프로퍼티가 변경 여부를 관찰하고 있다가 변경 되는 시점에서 update가 수행되는 방식의 디자인 패턴을 의미한다! 즉, 객체의 상태 변화에 따라 다른 객체의 상태 또한 연동되도록 객체간의 1:N 의존 관계를 구성하는 패턴이다. 우리가 코드를 작성하다 보면 특정 값에 대한 변경이 발생할 때 연쇄적으로 해당..
[Algorithm] [Python/Swift] Programmers - 카펫 Programmers - 카펫 문제 설명 Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다. Leo는 집으로 돌아와서 아까 본 카펫의 노란색과 갈색으로 색칠된 격자의 개수는 기억했지만, 전체 카펫의 크기는 기억하지 못했습니다. Leo가 본 카펫에서 갈색 격자의 수 brown, 노란색 격자의 수 yellow가 매개변수로 주어질 때 카펫의 가로, 세로 크기를 순서대로 배열에 담아 return 하도록 solution 함수를 작성해주세요. 제한사항 갈색 격자의 수 brown은 8 이상 5,000 이하인 자연수입니다. 노란색 격자의 수 yellow는 1 이상 2,000,000 이하인 자연수입니다. 카펫의 가로 길이는 세로 ..
[iOS] 고차함수 in Swift Higher-order Function in Swift 이번 시간에는 iOS 앱 개발을 위해 Swift 를 공부하면서, PS 언어로 Swift 를 사용하면서 익히 보고 들었던 고차함수에 대해 알아보려고 한다. What is Higher-order Function 자, 그러면 고차함수에 대하여 살펴보기 이전에 고차함수가 무엇인지 먼저 개념을 살펴보도록 하자! 고차함수(Higher-order Function) 함수의 인자로 함수를 취하거나 결과를 함수로 반환하는 함수 스위프트에서 유용한 고차함수는 대표적으로 map, filter, reduce 가 있다. 함수의 인자로 함수를 가지는 형태 또는 함수의 반환값이 함수 형태인 함수를 고차함수라고 칭한다! Swift에서의 함수는 일급시민으로 취급되기에 다른 함수의 ..