iyOmSd 202

[Swift Algorithm] 프로그래머스 43238 입국심사

programmers.co.kr/learn/courses/30/lessons/43238 코딩테스트 연습 - 입국심사 n명이 입국심사를 위해 줄을 서서 기다리고 있습니다. 각 입국심사대에 있는 심사관마다 심사하는데 걸리는 시간은 다릅니다. 처음에 모든 심사대는 비어있습니다. 한 심사대에서는 동시에 한 programmers.co.kr 문제만 봐도 1,000,000,000... 10억이죠? O(n)을 사용해도 버거운 속도일거 같네요 시간복잡도를 줄이는 쪽으로 접근해야할텐데 문제만보고 접근방법이 떠오르지않았는데 이문제의 카테고리가 이분탐색 이에요 ㅎㅎ 그래서 어떻게 이진탐색을 이용할까... 생각했지만 어렵더라구요 너무오래생각하게되면 풀이를 보고 배우는게 더좋다고했어요... ㅠㅠ 분을 기준으로 몇명을 검사할 수 ..

[Swift] 전처리문 #if DEBUG

개발하면서 배포를 하게 되는 상황이 있을수도 있는데 배포버전과 개발버전 설정을 다르게 하고싶은 경우가 있을 수 있어요 광고를 추가할때 개발버전엔 광고 테스트 id를 입력하게 하고 배포버전엔 진짜 id를 입력하고 서버 주소도 마찬가지로 상황에 맞게 적용 시킬 수 있겠죠 사용법은 간단해요 #if DEBUG print("디버그모드일 때(빌드) 실행되는 블럭") #else print("릴리즈모드일 때(배포) 실행되는 블럭") #endif 이런 문법으로 #if 뒤에 사용자의 플레그를 넣어 줄 수 있고 #endif 로 끝나요 PROJECT 혹은 TARGETS > Build Settings > Swift Compiler - Custom Flags에서 설정을 하구요 기본으로 DEBUG는 써있어요 RELEASE부분만 추..

iyOmSd/Title: Swift 2021.01.04

[Swift] DateFormatter 년도차이 YYYY vs yyyy

개발을 하다가 이슈가 생겼는데 년도를 비교하는 로직이고 날짜를 표시하는 기능이었어요 무심코 지나쳐서 흔하게(?) 할 수 있는 실수라고 생각되네요 테스트로 2020년에 개발했던 거라 당연하게 2020년 날짜 데이터도 잘 받았고 2021년 데이터도 했을 때 잘 됐었는데 ... 2021년이 되었어요!! 게시글 작성 시점은 1/2일이구요.. 응?? 2021년 12월 31일... 미래에서 온 게시글이니...? (원래 2020년 12월 31일 게시글) 분명 이 포맷으로 잘 되는 걸 확인했고 그전까지 date와 calendar로그를 찍어서 확인했을 때 년도가 알맞게 잘 나왔는데... 알고보니 YYYY가 문제더라구요 그냥 년도만 나타내는 포맷인줄알고... 아무생각없이 쓰고있어서 몰랐는데 하필 이때 yyyy가 아니였네요..

iyOmSd/Title: Swift 2021.01.02

[Swift] 커스텀 연산자 만들기 (Custom Operator)

+ 와 - 같은 연산자들을 직접 만들어 사용해 볼 거에요 infix: 사이에 연산자가 있는경우 ( 3 + 3 ) prefix: 앞에 연산자가 있는경우 ( ++3 ) postfix: 뒤에 연산자가 있는경우 ( 3++ ) 이 3가지중 하나를 골라서 먼저 정의를 해줘야해요 postfix operator ==== 그리고 연산자에서 중요한게 우선순위가 있어요 +와 *가 같이있다면 *부터 계산되는 그런 우선순위와 (서로다른 우선순위간의 계산) 같은순위의 연산자 -, + 사이에는 어느것 부터 계산되어야하는지도 중요하죠 (같은 우선순위간의 계산) precedencegroup 이라는 키워드를 이용해서 우선순위를 만들어 줄 수 있어요 옵션에는 associativity: 우선순위가 같은 연산자들의 처리 방식으로 left/r..

iyOmSd/Title: Swift 2020.12.31

[Swift] AVFoundation 카메라 만들어보기(기초)

UIImagePickerController를 이용해서 아주 손쉽게 카메라를 띄우고 사진을 가져오는 방법이 있지만 더 많은 컨트롤을 할 수 있는 AVFoundation을 다뤄서 만들어 보도록할거에여 AVFoundation으로 할 수 있는 것은 카메라, 비디오, 오디오, 녹음, 미디어에셋을 커스텀 하게 만들 수 있어요 간단한 원리라고하면 Device에서 어느 장치를 쓸건지 input을 만들어서 동작하는 Session에 넣어주고 넣은 input이 있으면 그에따른 output도 있겠죠? output도 설정해서 Session에 달아주면 되는식이에요 요약하자면 input, output을 session에 설정한다! 코드로 보면서 이해해볼까요 (간단해서 볼것도 없네요.. ㅎ) class TestCamera: UIVie..

iyOmSd/Title: Swift 2020.12.24

[Swift] Socket 라이브러리 비교 CocoaAsyncSocket vs Socket.IO

대표적인 소켓 라이브러리에요 (아마도..?) 소켓을 사용할 때 원하는 기능을 고려해서 선택해서 쓰면 될것 같아요 소켓이란.. 간단하게 HTTP통신은 클라이언트가 요청을 보내는 경우에만 응답하는 단방향 통신이고 실시간연결이아니라 필요할 때만 통신해서 데이터를 가져오는 방식이죠 소켓은 특정 Port를 통해서 연결을 유지하고 실시간으로 양방향 통신을 할 수 있는 방식이에요 실시간통신에 유리하죠 일반적인 소켓은 TCP/IP, UDP 프로토콜을 이용하지만 웹소켓은 HTTP Layer에서 작동하는 소켓이에요 기본적으로 HTTP(80), HTTPS(443)포트를 사용하구요 웹소켓 프로토콜은 WS, WSS가 있어요 CocoaAsyncSocket Objective-C로 구성되어 있고 GCD기반 비동기 소켓 라이브러리에요..

iyOmSd/Title: Swift 2020.12.23

[Swift Algorithm] 프로그래머스 42861 섬 연결하기

programmers.co.kr/learn/courses/30/lessons/42861 코딩테스트 연습 - 섬 연결하기 4 [[0,1,1],[0,2,2],[1,2,5],[1,3,1],[2,3,8]] 4 programmers.co.kr 문제를 간단하게 요약하면 각 노드를 모두 연결 할 수 있는 간선의 최소 가중치를 구해라 라는 문제에요 방문하는 문제와 결이 달라요 되게 어려운 문제지만 크루스칼 알고리즘과 Union Find 알고리즘 개념을 알고나면 접근하기 쉬워지는 문제에요 Union Find 란 여러개의 노드가 존재 할 때 연결된 노드들을 같은 집합 구성원으로 묶어주는 알고리즘이에요 [1,2], [2,3], [3,4], [5,6] 이런 집합이 있다면 위와 같이 그려 볼 수 있겠죠? 2번과 4번이 같은 집..

[Swift Algorithm] 프로그래머스 49189 가장 먼 노드

programmers.co.kr/learn/courses/30/lessons/49189 코딩테스트 연습 - 가장 먼 노드 6 [[3, 6], [4, 3], [3, 2], [1, 3], [1, 2], [2, 4], [5, 2]] 3 programmers.co.kr 간단하게는 1번에서부터 먼 거리에있는 노드를 찾는 문제에요 뭔가 bfs를 사용해야할거같죠..? 막상 하려니 감이안오네요 ㅎㅎ bfs는 큐를 사용하니까 큐를 이용해서 구현해볼거에요 해결 방법 제가 생각한 원리로는 1번에서 시작하면 인접한 노드는 [2, 3] 가있고 거리가 1이다를 저장할거에요 큐를 두개만들고 하나는 꺼내는용 하나는 결과 저장용이에요 (2, 1), (3, 1) 이 두개를 두개의 큐에 저장해두고 꺼내는용큐:(2, 1), (3, 1) 저..

[Swift Algorithm] 프로그래머스 60059 자물쇠와 열쇠 (2020 카카오 블라인드)

programmers.co.kr/learn/courses/30/lessons/60059 코딩테스트 연습 - 자물쇠와 열쇠 [[0, 0, 0], [1, 0, 0], [0, 1, 1]] [[1, 1, 1], [1, 1, 0], [1, 0, 1]] true programmers.co.kr 풀이 방법 자물쇠를 3배씩 영역을 늘리고 키를 90도씩 돌리니까 4가지의 키모양이 나올거에요 왜 3배를 늘리나면 이렇게 한칸씩 이동하면서 키를 넣어봐야해요 그렇기때문에 영역을 확장시켜주고 이렇게 움직이면서 딱 맞는 순간이 있다면 성공한 케이스가 되기때문이죠 문제조건을 잘봐야해요!! 저도 풀다가 놓친부분이 있어서 다시 봣어요.. 조건 돌기끼리는 만나면 안됌 키와 자물쇠의 크기는 다를 수 있음 (키 2번으로 5.1 겹치는 부분범..

[Swift] AutoLayout 코드작성방법 (Visual Format Language, NSLayoutAnchor, NSLayoutConstraint)

오토레이아웃을 코드로 작성하는 방법에는 3가지가 존재하는데요 사용법을 공부해보려고해요 같은 레이아웃을 다양한 방법으로 만들어볼건데요 aView(파랑) bView(빨강)이 있고 파란뷰가 좌우 간격 8, 위로20 파란뷰 20 아래에 빨간뷰가 좌우 30 파란뷰, 빨간뷰 모두 크기는 100 간단한 제약사항을 맞춰볼거에요 하기전에 기본 설정은 빼먹으면 안돼요 ㅎㅎ view.addSubview(aView) view.addSubview(bView) aView.translatesAutoresizingMaskIntoConstraints = false bView.translatesAutoresizingMaskIntoConstraints = false aView.backgroundColor = .blue bView.back..

iyOmSd/Title: Swift 2020.11.27