옵저버 패턴
·
🗣️ 면접/면접질문정리
Q. 옵저버 패턴에 대해 설명해주세요. A. 1. 옵저버 패턴이란, 어떤 객체의 상태가 변화할 때 그를 관찰하는 구독자들에게 이벤트를 발생시켜주는 디자인 패턴입니다. 2. 옵저버 패턴은 객체 간의 의존성을 줄이고, 객체 간의 상호작용을 느슨하게 만들 수 있습니다. 3. 옵저버 패턴을 사용함으로써 객체지향의 Open-closed principle (개방-폐쇄원칙)을 지킬 수 있습니다. (장점)
MVVM, MVC 패턴
·
🗣️ 면접/면접질문정리
Q. MVVM 패턴에 대해 설명해주세요 A. 1. Model, View, ViewModel로 이루어진 디자인패턴입니다. 2. MVVM 패턴의 목적은 뷰 로직과 비즈니스 로직을 분리하는 것입니다. 3. MVVM은 데이터 바인딩을 통해 뷰와 뷰모델 간의 데이터 동기화를 용이하게 합니다. Q. MVC 패턴에 대해 설명해주세요 A. 1. MVC패턴은 Model, View, Controller로 이루어진 디자인패턴입니다. 2. MVC패턴의 목적은 뷰와 모델의 의존성을 최소화하고, 이를 Controller를 통해 해결하는 것입니다. 3. MVC패턴은 Controller가 View와 Model사이의 상호작용을 조정합니다.
[구현] Extra Long Factorials
·
📝 코테/HackerRank
풀이 엄청 큰 수의 팩토리얼을 출력하는 문제다. 수가 너무 크기 때문에 수를 배열로 나눠서 풀어야한다. temp라는 임시배열을 역순으로 순회하면서 현재 숫자와 이전단계에서의 나머지를 더한다. 그 총합을 10으로 나누 몫이 새로운 나머지가 된다. 새로운 나머지를 문자열로 변환하여 result 문자열의 앞쪽에 삽입한다. 이것을 재귀로 반복하여 결과를 출력한다. 코드 func extraLongFactorials(n: Int) -> Void { // Write your code here var result = "1" for num in 1...n { result = multiply(result, by: num) } print(result) } func multiply(_ a: String, by: Int) ->..
[Swift] 이진탐색(Binary Search)
·
💻 CS/알고리즘
이진탐색 데이터가 정렬되어있는 배열에서 중간값과 비교하며 특정한 값을 찾아내는 탐색 방법 구현 재귀 //재귀적으로 표현한 이분탐색 //11이 어디있는지 찾는 이분탐색입니다. var binaryArray = [0, 1, 4, 6, 8, 11, 14, 23, 24, 26, 28, 31, 41, 50] func recursiveBinary(array: [Int], target: Int, start: Int, end: Int) -> Int? { //시작점이 끝점보다 커지면? 이미 모든 영역을 탐색했다는 뜻 이겠죠? 모든 영역을 탐색했는데 타겟 숫자를 //못 찾았다면 nil을 리턴해 주도록 합시다. if start > end { return nil } //일단 반으로 나눌거니까 중간을 찾아줍시다. var mid ..
[구현] Picking Numbers
·
📝 코테/HackerRank
func pickingNumbers(a: [Int]) -> Int { // Write your code here let uniqueArr = Array(Set(a)) var arr = [Int]() var res = [Int]() var max = 0 for n in uniqueArr { for e in a { if n - e = 0 { arr.append(n-e) } } if arr.count > max { max = arr.count res = arr } arr = [] } return res.count }
[구현] Climbing the Leaderboard
·
📝 코테/HackerRank
https://www.hackerrank.com/challenges/climbing-the-leaderboard/problem?isFullScreen=true Climbing the Leaderboard | HackerRank Help Alice track her progress toward the top of the leaderboard! www.hackerrank.com func climbingLeaderboard(ranked: [Int], player: [Int]) -> [Int] { var res = Array(repeating: 0, count: player.count) var uniqueRanked = [Int]() for score in ranked { if let lastScore = un..
[Swift] 프로그래머스60061 기둥과 보 설치
·
📝 코테/프로그래머스
import Foundation func solution(_ n:Int, _ build_frame:[[Int]]) -> [[Int]] { var answer = Set() func canConstruct() -> Bool { for structure in answer { let x = structure[0], y = structure[1], a = structure[2] // 기둥 if a == 0 { if answer.contains([x - 1, y, 1]) || answer.contains([x, y, 1]) || answer.contains([x, y - 1, 0]) || y == 0 { continue } return false } // 보 else { if answer.contains([x, ..
비트마스킹
·
💻 CS/알고리즘
비트마스킹 컴퓨터는 내부적으로 모든 자료를 이진수로 표현한다. 이런 특성을 이용해 정수의 이진수표현을 자료구조로 쓰는 기법 비트마스크를 이용하면 더 빠른 수행시간, 더 간결한 코드, 더 적은 메모리 사용이 가능하다. 비트 연산자 비트마스킹은 기본적으로 비트를 다뤄야 하므로, 비트 연산자에 대해서 먼저 알아보자. a & b a의 모든 비트와 b의 모든 비트를 AND 연산한다. 둘다 1이라면 1, 아니면 0 ex) 100 & 111 = 100 a | b a의 모든 비트와 b의 모든 비트를 OR 연산한다. 둘다 0이라면 0, 아니면 1 ex) 010 | 111 = 111 a ^ b a의 모든 비트와 b의 모든 비트를 XOR 연산한다. 둘이 다르다면 1, 아니면 0 ex) 011 ^ 101 = 110 ~a a의..
[Swift] 프로그래머스12911 다음 큰 숫자
·
📝 코테/프로그래머스
import Foundation func solution(_ n:Int) -> Int { var answer : Int = n + 1 while true { if n.nonzeroBitCount == answer.nonzeroBitCount { break; } answer += 1 } return answer } n.nonzeroBitcount : 비트에서 1의개수 세준다. import Foundation func solution(_ n:Int) -> Int { let countOne = countBinaryOne(n); for num in n+1...Int.max { if countBinaryOne(num) == countOne { return num; } } return n } func countBi..
[Swift] 프로그래머스42862 체육복
·
📝 코테/프로그래머스
import Foundation func solution(_ n:Int, _ lost:[Int], _ reserve:[Int]) -> Int { var lost = lost.sorted(by:
JerryiOS
'분류 전체보기' 카테고리의 글 목록 (4 Page)