본문 바로가기

분류 전체보기

(85)
Leetcode: Roman to Integer 문제설명 로마 숫자를 정수로 변환하라 로만 숫자는 다음 7가지 심볼로 표현된다. Symbol Value I 1 V 5 X 10 L 50 C 100 D 500 M 1000문제풀이 enum Roman: Int{ case I = 1, V = 5, X = 10, L = 50, C = 100, D = 500, M = 1000 static func parse(_ char: Character) -> Int { switch char { case "I" : return I.rawValue case "V" : return V.rawValue case "X" : return X.rawValue case "L" : return L.rawValue case "C" : return C.rawValue case "D" : retu..
LeetCode: Is Power Of Three 문제설명 정수 n이 주어졌을 때 n이 3의 제곱 수이면 true를 반환하고 아니라면 false를 반환하라. 문제풀이 꼬리 재귀로 풀 수 있다. 3의 제곱수를 올려가며 함수를 호출한다. 3의 제곱수가 n과 같으면 true이고 더 크다면 false를 반환한다. func isPowerOfThree(_ n: Int) -> Bool { if n == 1 { return true } return isPowerOfThreeHelper(n, 3) } func isPowerOfThreeHelper(_ n: Int, _ power: Int) -> Bool { if n == power { return true } if n < power { return false } return isPowerOfThreeHelper(n, p..
LeetCode: Best Time to Buy and Sell Stock 문제설명 인자로 정수 배열이 주어진다. 배열의 각 항목은 날짜의 순서대로 나열되있으며, 주식의 가격을 의미한다. 배열 중 하루를 선택하고 다른 날짜에 주식을 팔아서 가장 크게 수익이 나는 가격을 반환하라. 수익이 0보다 크지 않으면, 0을 반환하라 문제풀이 배열을 순회하면서 가장 가격이 저렴한 날짜를 선별한다. 가장 저렴한 날짜와 현재 순회하고 있는 주식 가격의 시세 차이를 계산한다. 이렇게 계산한 값과 이전에 저장된 수익을 비교하여 가장 큰 값을 저장한다. func maxProfit(_ prices: [Int]) -> Int { var buyAt = 0 var maxProfit = 0 for i in 1..
LeetCode: Climbing Stairs 문제설명 당신은 계단을 오르려고 한다. 계단의 끝까지 올라가기 위해 n 걸음이 필요하다. 계단은 한번에 1단계 또는 2단계 씩만 올라갈 수 있다. 계단에 끝까지 올라가는 모든 방법의 수는 얼마인가? 문제풀이 재귀로 풀 수 있으며, 최적화를 위해 메모이제이션을 사용할 수 있다. 동적 프로그래밍으로 풀 수 있다. 1. Brute-force로 풀기 func climbStairs(_ n: Int) -> Int { return climbStairsHelper(0, n) } func climbStairsHelper(_ i: Int, _ n: Int) -> Int { if i > n { return 0 } if i == n { return 1 } return climbStairsHelper(i + 1, n) + cl..
[HIG] Mac Catalyst: macOS의 앱 구조와 네비게이션 컨벤션 적용하기 잘 설계된 앱 네비게이션은 데이터의 구조를 반영한다. 또한, 플랫폼의 컨벤션을 따르면서 앱의 주요 기능을 제공한다 macOS 사용자가 당신의 앱을 편안하게 느끼려면, iOS 네비게이션 컨벤션을 macOS의 네비게이션 컨벤션으로 변환해야 한다 대부분의 iPad 앱은 플랫 네비게이션 또는 계층 네비게이션을 사용하거나 둘 모두를 동시에 사용한다 플랫 네비게이션은 카테고리 혹은 기능들의 영역을 표시한다. 예를 들어, App Store, Apple Music은 플랫 네비게이션 구조를 사용하여 사용자에게 Library와 같은 최상위 영역에 곧바로 접근할 수 있도록 한다 계층형 네비게이션은 트리와 같은 조직에서 정보를 표현한다. 사용자는 목적지에 도달할 때까지 아이템을 선택하며 탐색하게 된다 계층형 네비게이션의 가장..
[HIG] Mac Catalyst: Mac 앱을 위한 계획 여러분은 iPad 앱의 맥 버전을 생성하기 위해 맥 카탈리스트를 사용할 것이다. 맥 카탈리스트는 맥의 기초적인 기능들을 지원한다. 시스템 설정 키보드, 트랙패드, 마우스, 터치바 입력, 키보드 네비게이션과 키 포커스 윈도우 관리 풍부한 텍스트 상호동작, 복사와 붙여넣기와 수정을 위한 문맥상 메뉴 파일 관리 시스템에서 제공하는 UI 요소들은 자동으로 iOS에서 macOS로 변환된다. 예를 들어, 다음의 iOS에서 제공하는 아이템들이 macOS에 적합한 아이템으로 바뀌는 것들은 다음과 같다. 스플릿 뷰(Split view) 파일 브라우저(File browser) 액티비티 뷰(Activity view) 폼 시트(Form sheet) 문맥상 동작(Contextual actions) 당신의 앱이 Mac에서도 사용..
[HIG] Mac Catalyst - 시작하기 전에 맥 카탈리스트는 여러분의 아이패드 앱의 Mac버전을 만들기 위해 사용된다. 새로운 사용자가 앱을 사용할 수 있도록 해야하며 기존의 사용자에게 새로운 환경을 즐길 수 있는 기회를 제공해야 한다. Before You Start 대부분의 아이패드 앱은 맥에 사용될 수 있는 최고의 후보자다. 하지만, 몇몇의 아이패드 기능들은 맥에 존재하지 않는다. 예를 들어, 당신의 앱이 자이로스코프, 엑셀로미터 또는 후방 카메라와 같은 iPad의 기능을 주로 사용하거나 iOS 프레임워크인 HealthKit이나 ARKit을 사용한다면, 당신의 앱은 Mac에 맞지 않을 수 있다. iPad에만 가능한 기능들을 요구하지 않는 앱들에 한해서, Mac에서 당신의 앱을 정상적으로 동작하기 위한 가장 최고의 방법은 iPad에서 제대로 동작..
[HIG] Design Principles, 디자인 원칙 여러분의 앱의 정체성을 떠올릴 때 아래의 디자인 원칙들을 명심하자. Aesthetic Integrity, 미학적 무결성 미학적 무결성은 앱의 모습이나 행동이 앱의 기능과 얼마나 잘 결합되는지를 나타낸다. 예를 들어, 어떤 앱은 복잡한 업무를 수행하는 사람들이 나서지않는 그래픽, 표준 컨트롤, 예상가능한 기능들을 사용하여 업무에 집중할 수 있도록 돕는다. 반면, 게임과 같은 종류의 앱은 근사한 외양을 이용하여 재미와 즐거움을 주기도 한다. Consistency, 일관성 일관성 있는 앱은 익숙한 표준과 패러다임을 따른다. 일관성 있는 앱은 시스템이 제공하는 인터페이스 요소, 흔히 알려진 아이콘, 표준 텍스트 스타일, 그리고 통일된 용어를 잘 사용한다. 일관성 있는 앱은 사용자가 예상하는 특징과 기능들을 사용..