밑그린 흐린 그림
[IOS] Socket.IO를 사용한 Node.js 서버 연결 실패 이슈에 대하여
팀 프로젝트를 하면서 Swift 환경에서 소켓을 사용하기 위해 Socket.IO 라이브러리를 사용했다. Socket.IO, 정확히 Socket.IO-Client-Swift는 Swift에서 Socket.IO로 만들어진 서버와 연결하기 위한 도구를 제공한다. 내 Socket.IO 버전은 15.2.0, 서버는 4.4.1 이었는데 서버와 연결을 시도하니 아래와 같은 메시지가 콘솔에 출력됐다. SocketManager: masked and rsv data is not currently supported. code=1002, type=protocolError 처음엔 클라이언트 쪽의 transport(WebSocket, Polling) 또는 ATS 문제인 줄 알았으나 아니었다. 방법을 찾아보다가 결국 로컬로 서버를 ..
[프로그래머스] 단속카메라
https://programmers.co.kr/learn/courses/30/lessons/42884 코딩테스트 연습 - 단속카메라 [[-20,-15], [-14,-5], [-18,-13], [-5,-3]] 2 programmers.co.kr 어려워보이지만 조금만 쉽게 생각해보면 간단히 풀리는 문제였다. 문제를 요약하자면 N대의 자동차가 어느 도로 위를 주행한다. 각 차마다 그 도로에 진입하는 지점과 도로에서 나가는 지점이 주어진다. 이 도로에 진입하여 주행하는 차들은 적어도 한 번은 단속카메라를 거쳐야 하는데 단속카메라를 최소한의 개수로 설치하여 모든 차가 단속카메라를 거치게 하고 싶다. 이때 필요한 카메라의 개수를 구하는 문제이다. 상식적으로 생각했을때 도로 위에 자동차가 가장 많는 지점에 카메라를 ..
[프로그래머스] 큰 수 만들기
https://programmers.co.kr/learn/courses/30/lessons/42883 코딩테스트 연습 - 큰 수 만들기 programmers.co.kr 문제를 접하고보니 백준에서 똑같은 문제를 풀었던 기억이 났다. 그때는 고민을 하다가 힌트를 보고 풀었었는데, 지금 다시 풀려고 하니 기억이 잘 나지 않았다. 이 문제를 풀면서 복습의 중요성을 깨닫게 됐다. 자리 수가 최대 100만인 어떤 수가 주어지고, 그 수에서 k개 만큼의 숫자를 빼서 얻을 수 있는 가장 큰 수를 구하는 문제이다. 단순하게 생각했을때 주어진 수 number에서 k개 만큼 뺐을때 얻는 수의 자리 수는 len(number)-k이다. 가장 왼쪽 자리의 수(값이 큰 자리 수)부터 만든다고 가정할때 number안에 존재하는 가장..
[IOS] 스크롤 중 Timer가 동작하지 않았던 이슈와 해결방법
이 글을 이해하기 위해서는 먼저 Timer와 RunLoop에 대한 이해가 필요하다. Timer와 RunLoop에 대하여 간략하게 정리한 글 https://lietenant-k.tistory.com/29?category=999190) 팀 프로젝트를 진행하다가 Timer를 활용하여 카운트다운 기능을 구현하려고 했다. countDown 메서드 내부에서 Main RunLoop에 Timer를 추가하고 1초 간격으로 타이머를 발동시켜서 해당 코드 블럭을 호출하게 했다. var time = 10 let label = UILabel() func countDown(){ let timer = Timer.scheduledTimer(withTimeInterval: 1, repeats: true) { [unowned self]..
백준 22942번 : 데이터 체커
https://www.acmicpc.net/problem/22942 22942번: 데이터 체커 데이터가 조건에 맞는다면 YES, 조건에 만족하지 않는다면 NO를 출력한다. www.acmicpc.net 스택 자료구조를 활용해서 푸는 문제이다. x좌표상에 N개의 원이 존재하고, 각 원의 중심(x좌표)와 반지름이 주어진다. 이 N개의 원들 중에서 임의의 원 2개를 선택했을때 교점이 존재하는지 판단하는 문제이다. 즉, N개의 원 중 어느 것이라도 다른 원과 교점이 있으면 안된다. 데이터의 개수(N)이 최대 200,000이므로 N개 중에 2개를 선택하는 모든 경우의 수를 구하는 방법은 시간 초과 판정을 받기 때문에 다른 방법으로 문제를 해결해야 한다. A (중심: a, 반지름: r1), B (중심: b, 반지름:..
백준 2473번 : 세 용액
https://www.acmicpc.net/problem/2473 2473번: 세 용액 첫째 줄에는 전체 용액의 수 N이 입력된다. N은 3 이상 5,000 이하의 정수이다. 둘째 줄에는 용액의 특성값을 나타내는 N개의 정수가 빈칸을 사이에 두고 주어진다. 이 수들은 모두 -1,000,000,000 이상 www.acmicpc.net 전형적인 투 포인터 알고리즘 문제를 조금 복잡하게 꼬아낸 문제이다. 서로 다른 값을 가진 N개 (3 0: e -= 1 elif v == 0: print(d[i], d[s], d[e]) exit() else: s += 1 print(*r, sep=' ')
백준 20440번 : 🎵니가 싫어 싫어 너무 싫어 싫어 오지 마 내게 찝쩍대지마🎵 - 1
https://www.acmicpc.net/problem/20440 20440번: 🎵니가 싫어 싫어 너무 싫어 싫어 오지 마 내게 찝쩍대지마🎵 - 1 첫째 줄에 지동이의 방에 출입한 모기의 마릿수 N(1 ≤ N ≤ 1,000,000)가 주어진다. 다음 N개의 줄에 모기의 입장 시각 TE과 퇴장 시각 TX이 주어진다. (0 ≤ TE m: m = cnt tem = i flag = True elif cnt < m and cnt - d[i] == m and flag: txm = i flag = False print(m) print(tem, txm)
백준 1967번 : 트리의 지름
https://www.acmicpc.net/problem/1967 1967번: 트리의 지름 파일의 첫 번째 줄은 노드의 개수 n(1 ≤ n ≤ 10,000)이다. 둘째 줄부터 n-1개의 줄에 각 간선에 대한 정보가 들어온다. 간선에 대한 정보는 세 개의 정수로 이루어져 있다. 첫 번째 정수는 간선이 연 www.acmicpc.net 전형적이진 않지만 조금만 생각하면 풀 수 있는 그래프 탐색 문제이다. N개의 노드로 구성된 트리가 주어지고 간선으로 연결된 두 노드의 번호와 간선의 길이(비용)가 주어진다. 간선의 개수는 N-1개로 일정하다. 이 때 이 트리를 이루는 임의의 두 노드 사이의 거리의 최댓값을 구하는 문제다. 각 노드에 대하여 다른 노드로 가는 비용을 모두 더하여 값을 저장하고 그 값들 중에 최댓인..
[IOS] Notification을 이용하여 여러 클래스에서 데이터 받기
영화 정보 앱을 만드는 부스트코스 프로젝트에서 사용자가 선택한 정렬 기준에 맞게 영화 목록을 갱신하여 보여주는 기능을 구현하려고 했다. 사용자가 선택한 기준으로 정렬된 데이터가 담겨있는 URL에서 데이터를 가져오면 끝나는 일이었지만, 데이터를 요청한 클래스가 아닌 다른 클래스에도 가져온 데이터를 전달하여 동일한 정렬된 데이터로 갱신해야 했다. 이것을 해결한 방법을 간단하게 정리하려고 한다. 데이터를 요청하는 전역 메소드인 requestData 메소드를 살펴보자. func requestData(_ sub: String, _ para: String, _ type: T.Type, _ noti: Notification.Name) { let session = URLSession(configuration: .def..
[IOS] UIModalPresentationStyle의 pageSheet과 formSheet의 차이
두 프레젠테이션 방식이 실제 화면에서 어떻게 다른지 비교하기 위해 간략하게 설명하려고 한다. UIModalPresentationStyle은 뷰 컨트롤러가 modal 방식으로 화면에 보여질 때 어떤 방식으로 보여줄 것인지 설정하는 열거형 객체이다. 자칫하면 UIModalTransitionStyle과 헷갈릴 수 있는데, UIModalTransitionStyle은 해당 뷰 컨트롤러로 화면이 전환될 때 전환 이펙트(수평 접기, 수직으로 올라오기 등)라고 생각하면 된다. MS PowerPoint의 슬라이드 간 전환 애니메이션과 동일하다고 보면 된다. 글에서 다룰 두 가지 외에도 다른 여러가지 스타일들이 있으나, 여기서는 pageSheet과 formSheet만 다뤄보도록 하겠다. ※ UIModalPresentati..