BOJ 3190 뱀 swift
·
알고리즘
문제 링크 : https://www.acmicpc.net/problem/3190 문제 해설정말 단순하게 구현문제입니다. 다른 언어면 아마 Deque를 구현해서 사용했어야 문제를 풀 수 있을겁니다.뱀 문제를 풀 때 주의해야할 점은 뱀의 시작위치는 (1, 1)이라는 것입니다.일반 배열처럼 (0, 0)에서 시작하면 틀리기 때문에 주의하시길 바랍니다. 코드더보기import Foundationlet n = Int(readLine()!)!let k = Int(readLine()!)!var apples = [(Int, Int)]()for _ in 0..
BOJ 2449 전구 swift
·
알고리즘
문제 링크 : https://www.acmicpc.net/problem/2449 문제 해설N개의 전구가 일렬로 배치되어 있고, 각 전구는 1부터 K까지의 색으로 표현됩니다. 한 번에 연속된 같은 색의 전구 그룹을 선택해 다른 색으로 변경할 수 있을 때, 모든 전구를 같은 색으로 만드는 최소 변경 횟수를 구하는 문제입니다.연속된 같은 색 전구를 하나의 그룹으로 압축합니다.dp[i][j]를 i번째 그룹부터 j번째 그룹까지 같은 색으로 만드는 최소 횟수로 정의합니다.점화식 : dp[i][j] = min(dp[i][j], dp[i][k] + dp[k + 1][j] + (colors[i] != colors[k + 1] ? 1 : 0) 코드더보기import Foundationlet input = readLine()..
BOJ 1799 비숍
·
알고리즘
문제 링크 : https://www.acmicpc.net/problem/1799 문제 해설체스판 위에 비숍을 겹치지 않게 놓는 문제입니다.마음같아선 브루트 포스로 전부 찾아보고 싶지만 시간초과가 나기 때문에 효율적인 방법을 찾아야합니다.먼저, 비숍을 놓을 수 있는 칸을 흑과 백으로 나눕니다.(비숍은 대각선으로만 움직이기 때문에 서로 다른 색의 칸에는 영향을 못 줍니다.)비숍을 놓을 수 있는 위치를 흑백으로 나눴다면 백트래킹을 통해 가능한 비숍의 최대 개수를 각각 구합니다.(대각선은 i + j와 i - j + (N - 1)음수방지 로 2차원 배열이 아닌 1차원 배열로 구현 가능합니다.) 코드더보기import Foundationif let n = Int(readLine()!) { var board = ..
BOJ 1865 웜홀 swift
·
알고리즘
문제 링크 : https://www.acmicpc.net/problem/1865 문제 해설해당 문제는 양방향 간선(도로)와 단방향 간선(웜홀)을 입력받아 음수 사이클이 발생하는 지에 대해 알아보는 문제입니다.양방향 간선(도로)와 단방향 간선(웜홀)을 입력받아 edges에 추가합니다.벨만-포드 알고리즘을 사용하기 위해 거리 배열을 초기화 시킵니다.(이때 거리는 무한입니다.)시작점에서 모든 간선을 N-1번 반복하여 최단거리를 갱신합니다.갱신이 완료되고, 한번 더 실행시켰을 때 갱신이 발생하면 음수 사이클이 존재하는 것입니다. 코드더보기import Foundationif let tc = Int(readLine()!) { for _ in 0.. distance[x] + dist { ..
BOJ 1918 후위 표기식 swift
·
알고리즘
문제 링크 : https://www.acmicpc.net/problem/1918 문제 해설중위 표기식을 후위 표기식으로 변경하는 문제입니다.중위 표기식을 후위 표기식으로 변경하는 절차를 조건문으로 작성하는 것이 정답입니다.피연산자는 바로 출력합니다.(코드에서는 String var에 추가하였습니다.)연산자는 스택에 push합니다.("+", "-", "*", "/" 등)여는 괄호는 무조건 push합니다. "("닫는 괄호가 나오면 여는 괄호를 만날 때까지 스택에서 pop합니다.(주의: "(" 여는 괄호도 제거해야 합니다.)수식이 끝나면 스택에 남은 연산자를 pop합니다. 코드더보기import Foundationlet input = readLine()!.map{ String($0) }var result = ..
[맥북 M1] Cannot install under Rosetta 2 in ARM...
·
잡담
문제 기존 인텔 맥과 실리콘 맥의 경로 차이 때문에 발생하는 문제이다.여러가지 해결방법이 있지만 이왕 터미널이 켜져있는 김에 명령어로 해결해보자.(터미널을 Rosetta로 켜기 옵션을 끄면 됨) 해결방법arch -arm64 설치 명령어예시arch -arm64 brew install yarn
BOJ 2110 공유기 설치 swift
·
알고리즘
문제 링크 : https://www.acmicpc.net/problem/2110 문제도현이의 집 N개가 수직선 위에 있다. 각각의 집의 좌표는 x1, ..., xN이고, 집 여러개가 같은 좌표를 가지는 일은 없다.도현이는 언제 어디서나 와이파이를 즐기기 위해서 집에 공유기 C개를 설치하려고 한다. 최대한 많은 곳에서 와이파이를 사용하려고 하기 때문에, 한 집에는 공유기를 하나만 설치할 수 있고, 가장 인접한 두 공유기 사이의 거리를 가능한 크게 하여 설치하려고 한다.C개의 공유기를 N개의 집에 적당히 설치해서, 가장 인접한 두 공유기 사이의 거리를 최대로 하는 프로그램을 작성하시오.입력첫째 줄에 집의 개수 N (2 ≤ N ≤ 200,000)과 공유기의 개수 C (2 ≤ C ≤ N)이 하나 이상의 빈 칸을..
[레벨 0] HTTP와 HTTPS의 차이점, 그리고 iOS에서의 보안 통신 방법에 대해 설명해주세요.
·
면접
HTTP와 HTTPS의 차이점보안: HTTPS는 SSL/TLS 암호화를 사용하여 데이터를 암호화하지만, HTTP는 평문으로 데이터를 전송합니다.포트: HTTP는 80번 포트를, HTTPS는 443번 포트를 사용합니다.URL: HTTP는 "http://"로, HTTPS는 "https://"로 시작합니다.데이터 무결성: HTTPS는 데이터 변조를 방지할 수 있지만, HTTP는 그렇지 않습니다.검색 엔진 최적화: HTTPS는 검색 순위 향상에 도움됩니다.iOS에서의 보안 통신 방법HTTPS 사용: 모든 네트워크 통신에 HTTPS를 사용합니다.인증서 고정(Certificate Pinning): 신뢰할 수 있는 인증서만 허용하도록 구현합니다.ATS(App Transport Security) 활용: iOS의 ATS..
[레벨 0] 네트워크 프로토콜 스택과 iOS에서의 네트워크 통신 방식에 대해 설명해주세요.
·
면접
네트워크 프로토콜 스택프로토콜 스택은 데이터 통신에 사용되는 계층화된 프로토콜의 집합입니다.계층 구조로 이루어져 있어 각 계층이 특정 역할을 담당합니다.상위 계층에서 하위 계층으로 데이터가 전달되며, 각 계층에서 헤더 정보가 추가됩니다.(캡슐화)대표적인 모델로 OSI 7계층과 TCP/IP 4계층이 있습니다.TCP/IP 프로토콜 스택의 주요 계층응용 계층: HTTP, FTP, SMTP 등전송 계층: TCP, UDP인터넷 계층: IP네트워크 인터페이스 계층iOS에서의 네트워크 통신 방식URL SessioniOS의 기본 네트워킹 APIHTTP/HTTPS 요청을 처리하는 데 사용비동기적으로 데이터를 주고받을 수 있음Alamofire서드파티 네트워킹 라이브러리URLSession을 기반으로 하지만 더 간편한 인터..
[레벨 0] iOS에서의 메모리 구조와 관리 방식에 대해 자세히 설명해주세요.
·
면접
메모리 구조Clean Memory페이지 아웃 가능한 데이터로, 메미로 매핑된 파일, 이미지, 프레임워크 등이 포함됩니다.필요시 디스크에서 다시 로드할 수 있어 시스템에 의해 해제될 수 있습니다.Dirty Memory앱에 의해 수정된 메모리로, 런타임 중 생성된 객체나 데이터 구조가 포함됩니다.디스크와 동기화되지 않아 시스템이 쉽게 해제할 수 없습니다.Compressed MemoryiOS 7부터 도입된 메모리 압축 기술을 통해 관리되는 메모리입니다.접근되지 않은 페이지를 압축하여 공간을 절약하고, 필요시 다시 압축 해제합니다.메모리 관리 방식Automatic Reference Counting (ARC)컴파일 시점에 자동으로 retain/release 코드를 삽입하여 객체의 참조 횟수를 관리합니다.참조 횟수..