본문 바로가기

전체 글

(426)
[Algorithm] [Python] Programmers - 방문 길이 방문 길이 문제 설명 게임 캐릭터를 4가지 명령어를 통해 움직이려 합니다. 명령어는 다음과 같습니다. U: 위쪽으로 한 칸 가기 D: 아래쪽으로 한 칸 가기 R: 오른쪽으로 한 칸 가기 L: 왼쪽으로 한 칸 가기 캐릭터는 좌표평면의 (0, 0) 위치에서 시작합니다. 좌표평면의 경계는 왼쪽 위(-5, 5), 왼쪽 아래(-5, -5), 오른쪽 위(5, 5), 오른쪽 아래(5, -5)로 이루어져 있습니다. 이때, 우리는 게임 캐릭터가 지나간 길 중 캐릭터가 처음 걸어본 길의 길이를 구하려고 합니다. 예를 들어 위의 예시에서 게임 캐릭터가 움직인 길이는 9이지만, 캐릭터가 처음 걸어본 길의 길이는 7이 됩니다. (8, 9번 명령어에서 움직인 길은 2, 3번 명령어에서 이미 거쳐 간 길입니다) 단, 좌표평면의 경..
[Algorithm] [Python] Programmers - 배상 비용 최소화 Programmers - 배상 비용 최소화 문제 설명 OO 조선소에서는 태풍으로 인한 작업지연으로 수주한 선박들을 기한 내에 완성하지 못할 것이 예상됩니다. 기한 내에 완성하지 못하면 손해 배상을 해야 하므로 남은 일의 작업량을 숫자로 매기고 배상비용을 최소화하는 방법을 찾으려고 합니다. 배상 비용은 각 선박의 완성까지 남은 일의 작업량을 제곱하여 모두 더한 값이 됩니다. 조선소에서는 1시간 동안 남은 일 중 하나를 골라 작업량 1만큼 처리할 수 있습니다. 조선소에서 작업할 수 있는 N 시간과 각 일에 대한 작업량이 담긴 배열(works)이 있을 때 배상 비용을 최소화한 결과를 반환하는 함수를 만들어 주세요. 예를 들어, N=4일 때, 선박별로 남은 일의 작업량이 works = [4, 3, 3]이라면 배..
[iOS] Passing Data Between View Controllers Pass Data between View Controllers in swift 본 문서에는 View Controller 간 화면 전환시 데이터를 전달하는 방법에 대한 내용을 기재한다. iOS 앱 개발에서 View Controller 간 데이터 전달은 매우 중요하다. Passing Data Between View Controllers with properties 첫번째는 프로퍼티를 이용한 데이터 전달방법이다. 프로퍼티란 클래스 내 변수로서 클래스의 모든 인스턴스가 해당 프로퍼티를 가지며 이에 값을 할당하고 사용할 수 있다. UIVIewController 타입의 View Controller는 당연히 클래스의 인스턴스이므로 프로퍼티를 가질 수 있다. class MainViewController: UIViewC..
[Algorithm][Python] Programmers - 구명보트 programmers - 구명보트 문제 설명 무인도에 갇힌 사람들을 구명보트를 이용하여 구출하려고 합니다. 구명보트는 작아서 한 번에 최대 2명씩 밖에 탈 수 없고, 무게 제한도 있습니다. 예를 들어, 사람들의 몸무게가 [70kg, 50kg, 80kg, 50kg]이고 구명보트의 무게 제한이 100kg이라면 2번째 사람과 4번째 사람은 같이 탈 수 있지만 1번째 사람과 3번째 사람의 무게의 합은 150kg이므로 구명보트의 무게 제한을 초과하여 같이 탈 수 없습니다. 구명보트를 최대한 적게 사용하여 모든 사람을 구출하려고 합니다. 사람들의 몸무게를 담은 배열 people과 구명보트의 무게 제한 limit가 매개변수로 주어질 때, 모든 사람을 구출하기 위해 필요한 구명보트 개수의 최솟값을 return 하도록 ..
[iOS] WidgetKit 공식 문서 내용정리 WidgetKit iOS 홈 화면 또는 macOS 알림 센터에 앱과 관련된 컨텐츠를 표시하도록 도와주는 Extension. Overview 위젯킷은 iOS 홈 화면 또는 macOS 알림 센터에 배치하여 사용자가 앱의 컨텐츠에 즉시적으로 접근할 수 있도록 한다. 위젯은 최신 상태를 유지하므로 사용자는 항상 최신 정보를 한 눈에 살펴볼 수 있다. 3가지 사이즈(small, medium, large) 사이즈를 제공하며 이를 통해 앱 내 정보를 디스플레이할 수 있다. 또한 유저는 위젯을 개인화하여 필요에 따른 디테일한 내용을 볼 수 있다. 또한, Smart Stack & Smart Rotate 을 사용하면 여러개의 위젯을 스택 쌓듯 중첩할 수 있으며 업데이트 시간에 맞춰 사용자가 정확한 시간에 적절한 앱의 대한..
[iOS] SwiftUI 리스트와 네비게이션 SwiftUI 리스트와 네비게이션 List는 이름 그대로 수직 방향의 목록 형태로 사용자에게 정보를 제공한다. 기존의 UIKit 에서의 TableView 와 매우 흡사하다. List 뷰에서 각 항목을 터치했을때 다음 페이지로 전환하는 방식은 네비게이션을 이용한다. 네비게이션은 NavigationView 컴포넌트와 NavigationLink 컴포넌트를 사용하여 구현한다. List 뷰는 정적 데이터와 동적 데이터를 모두 표현할 수 있으며 추가, 삭제, 리오더링 등의 작업을 할 수 있도록 확장되기도 한다. SwiftUI 리스트 List 뷰에는 셀에 포함된 하나 이상의 뷰의 각 행을 수직 방향으로 목록화한다. 아래 예시를 살펴보자. struct ContentView: View { var body: some Vi..
[iOS] State 와 Observable State 와 Observable 우리가 공부해 온 SwiftUI는 데이터 주도적 방식 이라고 했다. 이는 데이터와 UI 내 뷰 사이에 Publisher - Subscriber 모델이 존재하기에 가능한 일이다. 이를 위해 SwiftUI는 상태 프로퍼티, Observable 객체, 그리고 Environment 객체를 제공하며 이들 모두는 UI의 모양과 동작을 결정하는 상태를 제공한다. SwiftUI 내에서 UI 레이아웃을 구성하는 뷰는 코드 내에서 직접 업데이트하지 않는다. 대신에, 뷰와 바인딩된 상태 객체가 시간이 지남에 따라, 현재 뷰 상황에 따라 그 상태가 자동으로 업데이트된다. 이번에는 상태 프로퍼티, Observable 객체, Environment 객체에 대하여 공부해보도록 한다. 상태 프로퍼티 ..
[iOS] SwiftUI 스택 그리고 프레임 SwiftUI 스택 그리고 프레임 UI 설계는 적절한 컴포넌트를 선택하고 뷰를 어떻게 배치할 지 결정한 뒤, 서로 다른 화면간 뷰들 간 이동을 구현하는 것이다. 앞서 살펴봤듯, SwiftUI에는 토글 뷰, 텍스트 필드, 버튼, 레이블, 슬라이더 등 앱 개발에 필요한 다양한 종류의 인터페이스 컴포넌트를 내장하고 있다. 또한 UI 구성방법과 화면의 방향 및 크기에 따라 대응하는 방법을 정의하는 레이아웃 뷰를 제공한다. 이번에는 대표적인 컨테이너 뷰 StackView 에 대하여 알아보며, UI를 보다 쉽게 설계하는 방법에 대해 알아보도록 한다. SwiftUI 스택 SwiftUI 가 기본적으로 제공하는 스택은 VStack(수직), HStack(수평), ZStack(중첩) 이 존재한다. 스택은 이름 그대로 차곡차..