SWIFT 8

LowerBound & UpperBound

최근에는 이분 탐색을 많이 쓰지 않았다가 얼마 전 카카오 문제 중 순위 검색의 효율성을 해결하기 위해 다시 찾아봤다. 전에 C++ 로 알고리즘 짤 때는 algorithm 라이브러리에 lowerbound 함수가 있어서 그걸 사용했었는데 이젠 필요하면 직접 구현해야하니까 이 참에 개념을 확실히 정리해두는게 좋을 것 같다는 생각이 들었다. 이런게 또 정확히 기억 안나면 사소한 부분 때문에 헷갈린다,, 참고. Lower bound basics LowerBound 찾고자 하는 값 이상이 처음 나오는 위치(인덱스)를 찾는 알고리즘이다. func lowerBound(_ sortedArr: [Int], _ target: Int) -> Int { var start = 0 var end = scores.count whil..

# Algorithm 2022.03.18

[카카오] 순위 검색

2021 KAKAO BLIND RECRUITMENT 순위 검색 Level 2 문제 각 항목에 대해 하나 씩 선택해야 함 개발 언어 항목 cpp, java, python 지원 직군 항목 backend, frontend 지원 경력구분 항목 junior, senior 선호 소울 푸드 chicken, pizza 지원자 정보 info → 배열 크기는 1 이상 50,000 이하 → “개발언어 직군 경력 소울푸드 점수” 형식 → 이 때 점수는 1 이상 100,000 이하 → 스페이스 하나로 구분 [“java backend junior pizza 150”, ”python frontend senior chicken 210”] 요구 사항 query → 배열 크기는 1 이상 100,000 이하 → “개발언어 and 직군 a..

[카카오] 신고 결과 받기

2022 KAKAO BLIND RECRUITMENT 신고 결과 받기 Level 1 문제 신고 횟수에 제한 없이 다른 유저를 계속 신고할 수 있음 한 유저에 대해서도 여러 번 신고가 가능하나, 동일 유저에 대한 신고 횟수는 1회로 처리됨 k번 이상 신고된 유저는 이용이 정지됨 해당 유저를 신고한 모든 유저에게 정지 사실을 메일로 보냄 각 유저 별로 메일을 받은 횟수 반환하기 id 개수 : 2이상 1,000 이하. 중복 없음 report 개수 : 1이상 200,000 이하. 이용자_id 신고한_id 형태의 문자열 k : 1이상 200 이하 Idea 각 유저 별로 신고한 id 목록 구하기 각 유저 별로 신고 받은 횟수 구하기 각 유저 별로 신고한 id 가 k 이상인지 확인하여 메일 받은 횟수 구하기 Code ..

[카카오] 튜플

2019 KAKAO 겨울 인턴십 튜플 Level 2 문제 튜플은 중복된 원소가 있을 수 있으나, 순서가 다르면 서로 다른 튜플이다 이 때, 중복 값이 없는 튜플 (a1, a2, a3, …, an) 이 주어질 때, 이 것은 다음과 같이 표현될 수 있다 → {{a1}, {a1,a2}, {a1,a2,a3}, ..., {a1,a2,a3,...,an}} 예로. 튜플이 (2, 1, 3, 4) 이면 다음과 같이 표현될 수 있다. 집합은 순서가 없으므로 집합 내 순서가 바뀔 수 있다. → {{2}, {2, 1}, {2, 1, 3}, {2, 1, 3, 4}} → {{2, 1, 3, 4}, {2}, {2, 1, 3}, {2, 1}} → {{1, 2, 3}, {2, 1}, {1, 2, 4, 3}, {2}} 특정 튜플을 표현..

Hugging Priority vs. Compression Resistance Priority

Hugging Priority 와 Compression Resistance Priority 를 설명하기 앞서 Intrinsic Content Size 에 대해 가볍게 알고가자면... Intrinsic Content Size UI framework 에서 제공하는 일부 뷰에는 컨텐츠 고유 사이즈(Intrinsic Content Size)라는 개념이 있음 → 예. UILabel, UIButton 등 텍스트나 이미지 크기에 따라 크기가 결정되는 뷰 → 다른 뷰들 간에 걸린 제약에 의해 본래 Intrinsic Content Size 보다 줄어들거나 늘어나게 됨 → Label 의 leading / trailing 또는 width / height 등이 설정되지 않았는데도 에러가 발생하지 않음 → Label 안에 들어..

# iOS | Swift 2022.01.04

ViewController Life Cycle

■ VC 의 상태를 4 가지로 구분할 수 있다 Appearing : 뷰가 화면에 나타나고 있는 상태 Appeared : 뷰가 화면에 나타나는게 완료된 상태 Disappearing : 뷰가 화면에서 사라지고 있는 상태 Disappeared : 뷰가 화면에서 사라진 상태 ■ VC 의 흐름은 다음과 같다고 할 수 있다 viewDidLoad -> viewWillAppear -> viewDidAppear -> viewWillDisappear -> viewDidDisappear Life Cycle Method — Managing the View loadView() ■ 이 메소드를 절대 직접적으로 호출해서는 안됨 ■ 컨트롤러가 관리하는 뷰를 만드는 역할을 함 → 뷰를 만들고 메모리에 올리는 과정 ■ view 프로퍼티..

# iOS | Swift 2022.01.03

[Article] Choosing Between Structures and Classes

Choosing Between Structures and Classes — Deside how to store data and model behavior mutating 을 공부하면서 든 의문점 중 하나는 만약 mutating 을 써야할 필요가 있는 경우에 굳이 뭔가 데이터를 변경하기 위해 mutating 키워드를 사용해야 한다면 클래스를 사용하는게 낫지 않을까? 왜 swift는 mutating 이란 기능을 만든걸까? 한 구조체 내에서 mutating 을 너무 자주 사용한다면 성능적으로 더 안 좋은 점이 있는건가? 데이터가 메소드내에서 자주 변경된다면 클래스를 사용하는게 더 나은걸까? 뭐 이런 생각이 들면서 그렇다면 구조체와 클래스를 언제 써야 좋은것일지 판단하기가 어려워졌다 전에 부캠을 할 때도 이런 ..

[요약본] Method

Methods — The Swift Programming Language (Swift 5.5) Method 란, 특정 타입과 관련된 함수 function 를 의미함 클래스, 구조체, 열거형 모두 Instance Method 를 정의할 수 있음 또한 Type Method 도 정의할 수 있음 Instance Method : 해당 타입의 instance 내에서 특정 작업과 기능을 하는 함수 Type Method : Type 자체와 연관된 함수. Objective-C 에서의 class method 와 유사함 Swift 의 구조체와 열거형에서 method 를 정의할 수 있다는 것은 C와 Objective-C 와의 아주 큰 차이임 C와 Objective-C 에서는 클래스가 함수를 정의할 수 있는 유일한 타입임 In..