본문 바로가기

전체 글

(54)
[swift] 고차함수 - 맵 (Map), 필터(Filter) 고차함수 : 매개변수로 함수를 갖는 함수 맵 (Map) 맵은 자신을 호출할 때 매개변수로 전달된 함수를 실행해서, 그 결과를 다시 반환해주는 함수이다. 맵을 사용하면 컨테이너가 담고 있던 각각의 값을 매개변수를 통해 받은 함수에 적용한 후, 다시 컨테이너에 담아 반환한다. 이 때 원본 컨테이너의 값은 변경되지 않고 새로운 컨테이너가 생성되어 반환된다. 그래서 맵은 기존 데이터를 변형하는 데 많이 사용한다. map 메소드와 for-in 구문 // for-in 구문 사용 for n in numbers { doubledNumbers.append(n * 2) strings.append("\(n)") } print(doubledNumbers) // [0, 2, 4, 6, 8] print(strings) // ["..
[프로그래머스] 42748. K번째 수 (swift) 코딩테스트 연습 - K번째수 [1, 5, 2, 6, 3, 7, 4] [[2, 5, 3], [4, 4, 1], [1, 7, 3]] [5, 6, 3] programmers.co.kr 풀이 주어진 요구사항 그대로 구현하면 되는 쉬운 문제이다. map을 사용해서 다시 풀어보기! 코드 import Foundation func solution(_ array:[Int], _ commands:[[Int]]) -> [Int] { var ans: Array = [] for i in commands { var temp: Array = [] for j in i[0]...i[1] { temp.append(array[j-1]) } temp.sort() ans.append(temp[i[2]-1]) } return ans }
[swift] sort와 sorted swift에서 배열을 정렬해주는 함수에는 대표적으로 sort, sorted가 있다. sort sort는 원본 배열을 오름차순으로 정렬한다. 그래서 원본 배열을 가지고 있어야 하는 경우 (ex. 하나의 배열을 여러 방식으로 정렬해야 할 경우) 에는 적절하지 않다. // sort() 함수 사용 var arr = [1, 2, 5, 4, 6] arr.sort() print(arr) // [1, 2, 4, 5, 6] 배열의 정렬 기준을 custom 하고 싶다면? sort(by: (Int, Int) throws -> Bool) 함수를 사용하면 된다. // sort(by: (Int, Int) throws -> Bool) 함수 사용 var arr = [1, 2, 5, 4, 6] arr.sort { (a, b) -> B..
[프로그래머스] 12915. 문자열 내 마음대로 정렬하기 (swift) 코딩테스트 연습 - 문자열 내 마음대로 정렬하기 문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 [sun, bed, car]이고 n이 1이면 각 단어의 인덱스 1� programmers.co.kr 문제 설명 1. 문자열로 구성된 리스트와 정수가 주어졌을 때, 각 문자열의 n번째 글자를 기준으로 오름차순 정렬 2. n번째 글자가 같을 경우 사전순으로 앞선 문자열이 앞에 위치 풀이 1. 하라는 대로 구현하면 됩니다 .. 2. swift의 정렬 함수를 공부할 수 있는 문제 코드 func solution(_ strings:[String], _ n:Int) -> [String] { var ans: [..
[프로그래머스] 12912. 두 정수 사이의 합 (swift) 코딩테스트 연습 - 두 정수 사이의 합 두 정수 a, b가 주어졌을 때 a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수, solution을 완성하세요. 예를 들어 a = 3, b = 5인 경우, 3 + 4 + 5 = 12이므로 12를 리턴합니다. 제한 조건 a와 b가 같은 경우 programmers.co.kr 풀이 1. 두 수 중 작은 수를 매번 +1 하며 큰 수와 같아질 때까지 반복문을 돌리는 방법도 있지만, 숫자의 차가 클 경우 비효율적이다. 2. 반복문을 사용하지 않고 바로 계산하는 것이 효율적임. func solution(_ a:Int, _ b:Int) -> Int64 { var aa: Int64 = Int64(a) var bb: Int64 = Int64(b) if(aa > bb) { swa..
[swift] String.Index와 String.SubSequence(Substring) String.Index String.Index 타입은 swift에서 문자열의 index를 나타낸다. c++에서 문자열의 첫번째 문자를 가리키고 싶다면 s[0]과 같은 방식으로 정수를 넣어주면 되지만, swift에서는 String.Index 타입을 넣어주어야 한다. // s = "abc" let start = s.index(after: s.startIndex) let end = s.index(before: s.endIndex) print(String(s[start])) // "b" print(String(s[end])) // "c" startIndex : 문자열의 맨 처음을 가리키는 인덱스 ("abc"에서는 a를 가리킴) endIndex : 문자열의 맨 끝을 가리키는 인덱스 ("abc"에서는 \0를 가리킴..
[프로그래머스] 12903. 가운데 글자 가져오기 (swift) 코딩테스트 연습 - 가운데 글자 가져오기 단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요. 단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다. 재한사항 s는 길이가 1 이상, 100이하인 스트링입니다. 입출력 예 s ret programmers.co.kr 문제 설명 1. 문자열 s의 가운데 글자를 반환하는 함수 구현하기. 2. 단어의 길이가 짝수라면 가운데 두 글자를 반환. 풀이 1. 홀수일 때와 짝수일 때의 경우를 나누어 return import Foundation func solution(_ s: String) -> String { let len: Int = s.count let index = s.index(s.startIndex, offsetBy: len/2) if l..
[iOS] iOS에서 체크박스 사용하기 xcode에는 체크박스가 존재하지 않기 때문에, 설치 후 사용해야 한다. 1. 프로젝트의 Podfile에 BEMCheckBox 모듈을 추가한다. 2. pod install 3. 프로젝트를 다시 열어준다. 4. 헤더 파일 추가하기 이 모듈은 Objective-C로 구성되어 있기 때문에, 헤더 파일로 연결시켜주어야 한다. 5. Build Settings > Swift Complier - General > Objective-C Bridging Header > 헤더 파일 추가 6. 스토리보드에서 view를 생성하면, custom class에서 BEMCheckBox를 선택할 수 있는 걸 볼 수 있다. 7. BEMCheckBox를 import한다. 8. BEMCheckBoxDelegate를 채택하고, delegat..