[iOS] 스타트업 면접 후기
·
🧑🏻‍💼 후기/면접후기
공부가 많이 부족해서 복기를 위해 작성합니다. 기억에 의존하기 때문에 사실과 다를 수 있습니다. 회사(불합격) - 시리즈A 유치 스타트업 - 중식, 야근시 석식 비용 제공 - 야근시 교통비 지원 - 건강검진비 지원 등 질문1 Class와 Struct의 차이는 무엇인가요? Class는 참조형식으로 메모리의 힙영역에 저장되고, Struct는 값형식으로 스택영역에 복사되서 저장됩니다. 그렇다면 보통 주로 Class를 사용하나 아니면 Struct를 사용하나요? 아무래도 애플에도 Struct를 권장하고 있는 만큼 스택영역에 빠르게 오르내릴 수 있는 Struct를 사용할 것 같습니다. 혹시 대규모 데이터 처리를 해본적있나요? 아니요.. 아직 신입이라 그럴 기회가 없었습니다.. 대규모 데이터를 처리하는 상황에서 S..
SOLID 5원칙
·
💻 CS
🖐🏻 SOLID 5원칙 1️⃣ SRP (단일책임의 원칙) 한 클래스는 하나의 책임만 가져야 한다. 정의 작성된 클래스는 하나의 기능만 가져야 한다. 클래스가 제공하는 모든 서비스는 하나의 책임을 수행하는 데 집중되어 있어야 한다. 어떤 변화에 의해 클래스를 변경해야 하는 이유는 오직 하나뿐이어야 한다. SRP 원리를 적용하면 무엇보다도 책임 영역이 확실해지기 때문에 한 책임의 변경에서 다른 책임의 변경으로의 연쇄 작용에서 자유로워질 수 있다. 적용방법 여러 원인들 속에 혼재된 각 책임을 개별 클래스로 분할하여 클래스 당 하나의 책임만을 맡도록 한다. 여기서 관건은 책임만 분리하는 것이 아니라 분리된 두 클래스간의 관계의 복잡도를 줄이도록 설계하는 것이다. 만약 각각의 클래스들이 유사하고 비슷한 책임을 중..
[Swift] 백준2630 색종이 만들기
·
📝 코테/BOJ
import Foundation let N = Int(readLine()!)! var board = [[Int]]() var counts = [0, 0] for _ in 0.. Bool { for i in x..
[Swift] 백준 1541 잃어버린 괄호
·
📝 코테/BOJ
import Foundation /// 첫째 줄에 식이 주어짐 ( 0~9, +, -로만 이루어짐) /// 처음과 마지막문자는 숫자 /// 연속해서 2개 이상의 연산자가 나타나지 않음 /// 5자리보다 많이 연속되는 숫자는 없음 /// 수는 0으로 시작할 수 있음 /// 입력으로 주어지는 길이 : 50보다 작거나 같음 let line = readLine()! let nums = line.components(separatedBy: ["+","-"]).map { Int($0)! } var opers = [Character]() var sum = 0 // 연산자 배열 만들기 for c in line { if c == "+" || c == "-" { opers.append(c) } } // 괄호적용 : - 다음 ..
[Swift] 그리디(Greedy) 알고리즘
·
💻 CS/알고리즘
이 글은 비전공자 취준생이 개인적인 공부를 위해 작성한 글입니다. 자세한 내용을 원하실 경우 https://yurimac.tistory.com/30, https://hanamon.kr/%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%ED%83%90%EC%9A%95%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-greedy-algorithm/ 이곳을 방문해주시기 바랍니다. 이글의 출처는 위의 링크입니다. 그리디 알고리즘 현재 상황에서 지금 당장 좋은 것만 고르는 방법을 의미합니다. 최적 해에 가까운 값을 구할 때 사용합니다. 매 순간마다 최적의 방법을 선택하여 값을 구하지만 결과적으로 최적 해라는 보장은 없습니다. 합이 가장 큰 값을 구해야하는 예제에서 다음 그림을 그..
[Swift] 백준 1922 쿼드트리
·
📝 코테/BOJ
import Foundation /// 주어진 영상이 모두 0으로만 되어있으면 압축 결과는 "0" /// 모두 1로만 되어있으면 압축결과는 "1" /// 만약 0과 1이 섞여있으면 전체를 한번에 나타내지 못하고 /// 왼쪽 위, 오른쪽 위, 왼쪽 아래, 오른쪽 아래 이렇게 4개의 영상으로 나누어 압축하게된다. /// 이 4개의 영역을 압축한 결과를 차례대로 괄호 안에 묶어서 표현한다. /// 분할정복이란? 문제를 나눌 수 없을 때까지 나누어서 다시 합병하여 문제의 답을 얻는 알고리즘 /// 상위의 해답을 구하기 위해 아래로 내려가면서 하위의 해답을 구함 let N = Int(readLine()!)! var board = [[Int]]() for _ in 0.. Bool { for i in x..
[Swift] 백준 1780 종이의 개수
·
📝 코테/BOJ
오늘 하루종일 풀려고 도전했는데 실패해서 결국 구글링을 했다.. 이 문제에서 주어진 N의 최대값은 3^7 = 2187이다. 즉 N^2 = 4782969 1초에 2000만회 연산된다고 해서 2초 = 4천만회안에 풀면되니까 O(N^2)로 풀면 될 줄 알았는데 .. 계속 시간초과 오류가 발생했다. 구글링 중 파이썬으로 푼 코드들을 Swift언어로 바꿔 풀어봐도.. 파이썬에서는 풀리지만 Swift에서는 풀리지 않았다ㅠㅠ O(N^2logN), O(NlogN) 등등 다양한 시간복잡도로 구현해봤는데 모두 실패했었다. import Foundation let N = Int(readLine()!)! var matrix = [[Int]]() for _ in 0..
[Swift] (분할 정복) 퀵 정렬 구현해보기
·
💻 CS/알고리즘
이글은 비전공자 취준생이 개인적인 공부를 위해 작성한 글입니다. 자세한 내용은 https://babbab2.tistory.com/101 이곳에서 확인해주세요! 모든 이미지의 출처는 위의 티스토리임을 밝힙니다. 분할 정복 문제를 나눌 수 없을 때까지 나누어서 풀고, 나누어서 푼 문제를 다시 합병하여 답을 얻는 알고리즘 하양식 접근법으로 일반적으로 재귀함수로 구현합니다. 퀵 정렬 하나의 리스트를 pivot(기준점)을 기준으로 2개의 비균등한 크기로 분할하고 분할된 부분 리스트를 정렬한 다음, 2개의 정렬된 부분 리스트를 합하여 전체가 정렬된 리스트가 되게하는 방법입니다. 쉽게 생각하면 배열을 분할하고 정렬한 다음, 다시합치는 방법인 것 같습니다. 퀵정렬의 순서는 아래와 같습니다. 1. 기준점(pivot)을 ..
[Swift] 백준 1676 팩토리얼 0의 개수
·
📝 코테/BOJ
import Foundation let n = Int(readLine()!)! print(n/5 + n/25 + n/125) 2 x 5 가 포함되면 0의 개수를 알 수 있다. 수가 늘어날 수록 2가 5보다 많을 거니까 5의 개수만 알면 0의 개수를 알 수 있다. 500미만의 수 중에서는 5, 5^2, 5^3 3가지 경우 밖에 없기때문에 3개의 케이스만 나눠서 더해주면 된다.
[Swift] 백준1012 유기농배추
·
📝 코테/BOJ
import Foundation let T = Int(readLine()!)! for _ in 1...T { let MNK = readLine()!.components(separatedBy: " ").map { Int($0)! } let M = MNK[0] // 배추밭 가로길이 let N = MNK[1] // 배추밭 새로길이 let K = MNK[2] // 배추가 심어져 있는 위치의 개수 // M * N 2차원 배열 생성 var graph = [[Int]](repeating: [Int](repeating: 0, count: M), count: N) for _ in 1...K { let XY = readLine()!.components(separatedBy: " ").map { Int($0)! } let ..
JerryiOS
'분류 전체보기' 카테고리의 글 목록 (9 Page)