전체 글(228)
-
[iOS] AppDelegate와 SceneDelegate, App의 Life Cycle(생명주기)
👉 Life Cycle (생명주기) 생명주기란 앱의 최초 실행과 종료 사이에 발생하는 이벤트로 구성된다. 생명주기에는 App 생명주기와 ViewController 생명주기가 있다. 2023.02.24 - [iOS/iOS] - [iOS] ViewController의 생명주기(Life Cycle) 👉 AppDelegate와 SceneDelegate iOS 12 이전 iOS 13 이후 iOS 12 까지는 대부분 하나의 앱에 하나의 window였지만 iOS 13부터는 window의 개념이 scene으로 대체되고 하나의 앱에서 여러개의 scene을 가질 수 있다. 기존에는 한 번에 하나의 화면만 보여주었지만 이제는 동일한 앱을 스플릿뷰로 나눠서 실행할 수 있게 되었다. 이런 경우 사용자가 실제로 사용하는 앱은 하..
2023.02.24 -
[iOS] ViewController의 Life Cycle(생명주기)
👉 ViewController 뷰컨트롤러란 사용자 인터페이스를 관리하고 화면에 내용을 표시하는 데 사용되는 객체이다. 앱의 로직과 데이터를 조정하고 화면에 표시되는 내용을 관리한다. 뷰컨트롤러는 생명주기를 따르며 화면의상태변화에 따라 적절한 메소드를 호출하여 초기화, 데이터로딩, 화면전환, 리소스 해제 등을 관리한다. 뷰컨트롤러는 iOS앱의 핵심 구성요소 중 하나이며, 사용자 인터페이스와 앱의 동작을 관리하는 중요한 역할을 수행한다. ✔️ 역할 수행 화면 관리 : 앱의 각 화면을 담당하며 해당 화면의 뷰 계층 구조를 관리한다. 뷰컨트롤러는 화면의 모양과 동작을 결정하고 사용자 인터페이스 요소들을 관리하며 데이터와 뷰를 연결한다. 상태 관리 : 뷰컨트롤러는 화면 전환과 같은 상태변화에 대응하여 적절한 동작..
2023.02.24 -
[알고리즘] Swift -백준 #1697(숨바꼭질) -BFS
문제링크 https://www.acmicpc.net/problem/1697 1697번: 숨바꼭질 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 www.acmicpc.net 문제 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 때 걷는다면 1초 후에 X-1 또는 X+1로 이동하게 된다. 순간이동을 하는 경우에는 1초 후에 2*X의 위치로 이동하게 된다. 수빈이..
2023.02.24 -
[알고리즘] Swift -백준 #2468(안전 영역) -DFS
문제링크 https://www.acmicpc.net/problem/2468 2468번: 안전 영역 재난방재청에서는 많은 비가 내리는 장마철에 대비해서 다음과 같은 일을 계획하고 있다. 먼저 어떤 지역의 높이 정보를 파악한다. 그 다음에 그 지역에 많은 비가 내렸을 때 물에 잠기지 않는 www.acmicpc.net 문제 재난방재청에서는 많은 비가 내리는 장마철에 대비해서 다음과 같은 일을 계획하고 있다. 먼저 어떤 지역의 높이 정보를 파악한다. 그 다음에 그 지역에 많은 비가 내렸을 때 물에 잠기지 않는 안전한 영역이 최대로 몇 개가 만들어 지는 지를 조사하려고 한다. 이때, 문제를 간단하게 하기 위하여, 장마철에 내리는 비의 양에 따라 일정한 높이 이하의 모든 지점은 물에 잠긴다고 가정한다. 어떤 지역의..
2023.02.24 -
[알고리즘] Swift -백준 #10451(순열 사이클) -DFS
문제링크 https://www.acmicpc.net/problem/10451 10451번: 순열 사이클 1부터 N까지 정수 N개로 이루어진 순열을 나타내는 방법은 여러 가지가 있다. 예를 들어, 8개의 수로 이루어진 순열 (3, 2, 7, 8, 1, 4, 5, 6)을 배열을 이용해 표현하면 \(\begin{pmatrix} 1 & 2 &3&4&5&6&7&8 \\ 3 www.acmicpc.net 문제 1부터 N까지 정수 N개로 이루어진 순열을 나타내는 방법은 여러 가지가 있다. 예를 들어, 8개의 수로 이루어진 순열 (3, 2, 7, 8, 1, 4, 5, 6)을 배열을 이용해 표현하면 와 같다. 또는, Figure 1과 같이 방향 그래프로 나타낼 수도 있다. 순열을 배열을 이용해 로 나타냈다면, i에서 πi..
2023.02.20 -
[알고리즘] Swift -백준 #2178(미로 탐색) -BFS
문제링크 https://www.acmicpc.net/problem/2178 2178번: 미로 탐색 첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력으로 주어진다. www.acmicpc.net 문제 N×M크기의 배열로 표현되는 미로가 있다. 1 0 1 1 1 1 1 0 1 0 1 0 1 0 1 0 1 1 1 1 1 0 1 1 미로에서 1은 이동할 수 있는 칸을 나타내고, 0은 이동할 수 없는 칸을 나타낸다. 이러한 미로가 주어졌을 때, (1, 1)에서 출발하여 (N, M)의 위치로 이동할 때 지나야 하는 최소의 칸 수를 구하는 프로그램을 작성하시오. 한 칸에서 다른 칸으로 이동할 때, 서로 인접한 칸으로만 이..
2023.02.20 -
[알고리즘] Swift -백준 #2583(영역 구하기) -DFS
문제링크 https://www.acmicpc.net/problem/2583 2583번: 영역 구하기 첫째 줄에 M과 N, 그리고 K가 빈칸을 사이에 두고 차례로 주어진다. M, N, K는 모두 100 이하의 자연수이다. 둘째 줄부터 K개의 줄에는 한 줄에 하나씩 직사각형의 왼쪽 아래 꼭짓점의 x, y좌표값과 오 www.acmicpc.net 문제 눈금의 간격이 1인 M×N(M,N≤100)크기의 모눈종이가 있다. 이 모눈종이 위에 눈금에 맞추어 K개의 직사각형을 그릴 때, 이들 K개의 직사각형의 내부를 제외한 나머지 부분이 몇 개의 분리된 영역으로 나누어진다. 예를 들어 M=5, N=7 인 모눈종이 위에 과 같이 직사각형 3개를 그렸다면, 그 나머지 영역은 와 같이 3개의 분리된 영역으로 나누어지게 된다. ..
2023.02.20 -
[알고리즘] Swift -백준 #1012(유기농 배추) -DFS
문제링크 https://www.acmicpc.net/problem/1012 1012번: 유기농 배추 차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에 www.acmicpc.net 문제 차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에 효과적인 배추흰지렁이를 구입하기로 결심한다. 이 지렁이는 배추근처에 서식하며 해충을 잡아 먹음으로써 배추를 보호한다. 특히, 어떤 배추에 배추흰지렁이가 한 마리라도 살고 있으면 이 지렁이는 인접한 다른 배추로 이동할 ..
2023.02.19 -
[알고리즘] Swift -백준 #2667(단지번호붙이기) -DFS
문제링크 https://www.acmicpc.net/problem/2667 2667번: 단지번호붙이기 과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여 www.acmicpc.net 문제 과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여기서 연결되었다는 것은 어떤 집이 좌우, 혹은 아래위로 다른 집이 있는 경우를 말한다. 대각선상에 집이 있는 경우는 연결된 것이 아니다. 는 을 단지별로 번호를 붙인 것이다. 지도를 입력하여 단지수를..
2023.02.18 -
[알고리즘] Swift -백준 #2606(바이러스) -DFS/BFS
문제링크 https://www.acmicpc.net/problem/2606 2606번: 바이러스 첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수가 주어 www.acmicpc.net 문제 신종 바이러스인 웜 바이러스는 네트워크를 통해 전파된다. 한 컴퓨터가 웜 바이러스에 걸리면 그 컴퓨터와 네트워크 상에서 연결되어 있는 모든 컴퓨터는 웜 바이러스에 걸리게 된다. 예를 들어 7대의 컴퓨터가 과 같이 네트워크 상에서 연결되어 있다고 하자. 1번 컴퓨터가 웜 바이러스에 걸리면 웜 바이러스는 2번과 5번 컴퓨터를 거쳐 3번과 6번 컴퓨터까지 전파되어 2, 3, 5, 6 네 대의 ..
2023.02.18 -
[알고리즘] Swift -백준 #1260(DFS와 BFS)
문제링크 https://www.acmicpc.net/problem/1260 1260번: DFS와 BFS 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사 www.acmicpc.net 문제 그래프를 DFS로 탐색한 결과와 BFS로 탐색한 결과를 출력하는 프로그램을 작성하시오. 단, 방문할 수 있는 정점이 여러 개인 경우에는 정점 번호가 작은 것을 먼저 방문하고, 더 이상 방문할 수 있는 점이 없는 경우 종료한다. 정점 번호는 1번부터 N번까지이다. 입력 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ ..
2023.02.17 -
[알고리즘] Swift -백준 #11286(절댓값 힙)
문제링크 https://www.acmicpc.net/problem/11286 11286번: 절댓값 힙 첫째 줄에 연산의 개수 N(1≤N≤100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 0이 아니라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0 www.acmicpc.net 문제 절댓값 힙은 다음과 같은 연산을 지원하는 자료구조이다. 배열에 정수 x (x ≠ 0)를 넣는다. 배열에서 절댓값이 가장 작은 값을 출력하고, 그 값을 배열에서 제거한다. 절댓값이 가장 작은 값이 여러개일 때는, 가장 작은 수를 출력하고, 그 값을 배열에서 제거한다. 프로그램은 처음에 비어있는 배열에서 시작하게 된다. 입력 첫째 줄에 연산의 개수 N(1≤N≤100..
2023.02.16 -
[알고리즘] Swift -백준 #2841(외계인의 기타 연주)
문제링크 https://www.acmicpc.net/problem/2841 2841번: 외계인의 기타 연주 첫째 줄에 멜로디에 포함되어 있는 음의 수 N과 한 줄에 있는 프렛의 수 P가 주어진다. (N ≤ 500,000, 2 ≤ P ≤ 300,000) 다음 N개 줄에는 멜로디의 한 음을 나타내는 두 정수가 주어진다. 첫 번째 정수 www.acmicpc.net 문제 상근이의 상상의 친구 외계인은 손가락을 수십억개 가지고 있다. 어느 날 외계인은 기타가 치고 싶었고, 인터넷에서 간단한 멜로디를 검색했다. 이제 이 기타를 치려고 한다. 보통 기타는 1번 줄부터 6번 줄까지 총 6개의 줄이 있고, 각 줄은 P개의 프렛으로 나누어져 있다. 프렛의 번호도 1번부터 P번까지 나누어져 있다. 멜로디는 음의 연속이고, ..
2023.02.15 -
[iOS] Frame 과 Bounds
👉 시작 Bounds 와 Frame 모두 뷰의 위치와 크기를 나타내는 UIView의 프로퍼티이다. 두가지의 차이점을 알아보자요. 👉 Frame https://developer.apple.com/documentation/uikit/uiview/1622621-frame 상위 뷰의 좌표 시스템에서 뷰의 위치와 사이즈를 나타낸다. frame이 나타내는 origin(x, y)는 슈퍼뷰의 원점을 (0, 0)으로 보고 원점으로부터 얼마나 떨어져있는 지를 나타낸다. 👉 Bounds https://developer.apple.com/documentation/uikit/uiview/1622580-bounds 자신의 좌표 시스템에서 뷰의 위치와 크기를 나타낸다. 자신의 좌표(default 값)이 (0, 0)이다. 👉 Fra..
2023.02.14 -
[알고리즘] Swift -백준 #14426(접두사 찾기) -실패
문제링크 https://www.acmicpc.net/problem/14426 14426번: 접두사 찾기 문자열 S의 접두사란 S의 가장 앞에서부터 부분 문자열을 의미한다. 예를 들어, S = "codeplus"의 접두사는 "code", "co", "codepl", "codeplus"가 있고, "plus", "s", "cude", "crud"는 접두사가 아니다. 총 N개의 문자 www.acmicpc.net 문제 문자열 S의 접두사란 S의 가장 앞에서부터 부분 문자열을 의미한다. 예를 들어, S = "codeplus"의 접두사는 "code", "co", "codepl", "codeplus"가 있고, "plus", "s", "cude", "crud"는 접두사가 아니다. 총 N개의 문자열로 이루어진 집합 S가 ..
2023.02.11 -
[iOS] SafeArea
👉 SafeArea 란? 아이폰X부터 상단의 노치가 등장하면서 SafeArea 가 나오게 되었다. 상단의 노치부분과 하단의 홈바부분을 제외한 영역을 말한다. 컨텐츠가 제대로 안전하게 보일 수 있는 부분이다. 세로 가로 👉 SafeArea 적용 SafeArea에 적용한 View Superview에 적용한 View 화면 전체를 다 채울 때에는 SafeArea를 적용하지 않을 수 있다. 원하는 부분의 제약조건(Constraint)을 Safe Area 에서 Superview 로 변경하면 된다. ✔️ SafeArea 적용 해제 ViewController에서 'Use Safe Area Layout Guides' 체크 해제를 하면 된다. 체크했을 때 체크 해제했을 때 SafeArea을 아예 사용하지 않고 이용이 가능..
2023.02.11 -
[iOS] 스토리보드 (Storyboard) 와 코드베이스 (CodeBase)
iOS 앱의 UI를 만들 때에는 스토리보드를 사용하거나 코드로 짜는 방법 두 가지가 있다. 처음 Xcode를 접하였을 때 기본적으로 Main.storyboard 파일이 생성되어 있어 이 방법을 먼저 사용할 것이다. 스토리보드로 사용하다 이제 문제점이 하나씩 나타날 것이고 그러면 코드UI로 넘어가는 것 같다. 그래서 이번에는 스토리보드의 장단점과 코드UI 와의 차이를 알아보려고 한다. 👉 스토리보드 (Storyboard) 직관적으로 앱의 뷰와 흐름을 알 수 있다. 소스코드를 보지 않아도 UI 확인이 가능하다. 결과물을 예측하기 쉽다. 화면 로딩이 오래걸린다. 재사용성이 떨어진다. IBOutlet, IBAction 등의 연결이 끊어지면 찾기가 어렵다. 여러 명이 작업할 때 conflict가 발생할 경우 해결..
2022.12.01 -
[Design Pattern] 디자인패턴 -MVC 패턴
👉 MVC 패턴이란 Model + View + Controller 구조의 아키텍처 패턴 Model : 앱의 데이터와 비즈니스 로직을 가지고 있음 View : 사용자에게 데이터를 보여주는 UI를 담당함 Controller : Model 과 View의 중간다리로 View로 부터 사용자의 액션을 받아 Model에게 어떤 작업을 해야하는 지 알려주거나, Model의 데이터 변화를 View에게 전달하여 View를 어떻게 업데이트할 지 알려줌 👉 서로 상호작용 Model & Controller - Controller는 Model 에 접근 가능 - Model은 Controller 에 Notification & KVO 방식을 통해 모델의 변화를 알림 Model & View - Model 과 View는 서로 소통 불가능..
2022.09.18 -
[UIKit] 버튼 클릭 후 사파리 URL 열기
임포트 한 후 import SafariServices 버튼이벤트 @IBAction func didTabLinkBtn(_ sender: Any) { let url = NSURL(string: "https://www.naver.com/") let urlView: SFSafariViewController = SFSafariViewController(url: url! as URL) self.present(urlView, animated: true, completion: nil) } 여기에서 URL주소를 정확하게 입력해줘야한다. let url = NSURL(string: "URL주소 입력") 결과
2022.09.16 -
[UIKit] 뷰컨트롤러(ViewController) Dismiss 후 데이터 전달 -델리게이트 패턴
https://nlestory.tistory.com/155 [Design Pattern] 디자인패턴 -델리게이트 패턴 (Delegate Pattern) 👉 Delegate 란? 사전적의미는 '위임하다'라는 뜻이다. 즉 위임자를 갖고 객체가 다른 객체에게 자신의 일을 위임하는 형태 👉 이벤트를 전달하는 방식 만약에 A뷰컨트롤러에서 B뷰컨트롤러로 이 nlestory.tistory.com 두개의 뷰컨트롤러가 있을 때 첫번째 VC에서 두번째 VC로 이동 후 두번째 VC의 텍스트필드의 데이터를 첫번째 VC의 라벨로 받아올 것이다 화면 이동 IBAction 을 이용하여 버튼을 클릭했을 때 두번째 VC로 이동한다 두번째 VC에 닫기버튼도 추가한다 프로토콜 생성 (첫번째 VC에서 진행) 프로토콜 상속 fix버튼 클릭..
2022.09.01