전체 글 159

[Swift] 프로그래머스 - 문자열 압축 (Level. 2)

문제 https://school.programmers.co.kr/learn/courses/30/lessons/60057?language=swift 코드 import Foundation func solution(_ s:String) -> Int { let N = s.map { String($0) } if N.count == 1 { return 1 } var array = [N.count] //맨 처음 비교대상은 한번도 압축이 되지 않을때, 즉 문자열 자체의 길이 var answer = "" var prev = "" var count = 1 for step in 1...N.count/2 { //최대로 압축할 수 있는 범위가 문자열 절반의 길이 answer = "" prev = N[0.. N.count - 1..

[Swift] 백준 1080 - 행렬

문제 https://www.acmicpc.net/problem/1080 1080번: 행렬 첫째 줄에 행렬의 크기 N M이 주어진다. N과 M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 행렬 A가 주어지고, 그 다음줄부터 N개의 줄에는 행렬 B가 주어진다. www.acmicpc.net 코드 let input = readLine()!.split(separator:" ").map { String($0) }.map{ Int($0)!} let N = input[0] let M = input[1] var A:[[Int]] = [] var B:[[Int]] = [] var cnt = 0 for _ in 0...N-1 { A.append(readLine()!.map { String($0) }.map..

[Swift] 백준 1541 - 잃어버린 괄호

문제 https://www.acmicpc.net/problem/1541 코드 var array = readLine()!.split(separator: "-").map { String($0) } array = array.filter { $0 != "" } //공백제거 var sum = 0 var count = 0 var sum_array:[Int] = [] for i in array { count = i.split(separator:"+").map { Int($0)!}.reduce(0, +) sum_array.append(count) } if sum_array.count == 1 { // "+"만 있는 경우 -> 위에서 array의 count가 1이기 때문에 더한 값이 있는 배열의 크기도 1임 print(..

[Swift] 백준 10610 - 30

문제 https://www.acmicpc.net/problem/10610 코드 let input = readLine()!.map{ String($0) } //쪼개서 정수 배열로 저장 var sum = 0 if !input.contains("0"){ print(-1) } else{ for i in input { sum += Int(i)! } if sum%3 == 0 { print(input.sorted(by: >).joined()) } else{ print(-1) } } 풀이 30의 배수임을 판별하기 위해서는 끝이 0이 아닌지와 각 자릿수를 더한 값이 3의 배수인지를 판별하면 된다. 따라서 input에 0이 들어가있지 않으면 30의 배수가 아니므로 바로 -1을 프린트해주었고, 다 더했을 때 3의 배수이면 ..

[Swift] 프로그래머스 입문 - 겹치는 선분의 길이

문제 https://school.programmers.co.kr/learn/courses/30/lessons/120876 선분 3개가 평행하게 놓여 있습니다. 세 선분의 시작과 끝 좌표가 [[start, end], [start, end], [start, end]] 형태로 들어있는 2차원 배열 lines가 매개변수로 주어질 때, 두 개 이상의 선분이 겹치는 부분의 길이를 return 하도록 solution 함수를 완성해보세요. lines가 [[0, 2], [-3, -1], [-2, 1]]일 때 그림으로 나타내면 다음과 같습니다. 선분이 두 개 이상 겹친 곳은 [-2, -1], [0, 1]로 길이 2만큼 겹쳐있습니다. 제한사항 lines의 길이 = 3 lines의 원소의 길이 = 2 모든 선분은 길이가 1 ..

[RxSwift] RxSwift + MVVM + Moya 적용 (feat. tableview binding)

Podfile # Moya with rx pod 'Moya/RxSwift', '~> 15.0' # RxSwift & Cocoa pod 'RxSwift', '~> 6.5.0' pod 'RxCocoa', '~> 6.5.0' # SwiftyJson pod 'SwiftyJSON', '~> 4.0' 1. 엮을 API의 구조 header x-access-token : jwt 토큰 response { "isSuccess": true, "code": 1000, "message": "성공", "result" : [ { "profileImageUrl" : "이미지 링크", "roomId" : 255, "title" : "test", "repUserName" : "Runnber6421", "recentMessage" : "..

🍎 iOS/RxSwift 2023.01.19

[Swift] 프로그래머스 코딩테스트 입문 - 구슬을 나누는 경우의 수

문제 설명 머쓱이는 구슬을 친구들에게 나누어주려고 합니다. 구슬은 모두 다르게 생겼습니다. 머쓱이가 갖고 있는 구슬의 개수 balls와 친구들에게 나누어 줄 구슬 개수 share이 매개변수로 주어질 때, balls개의 구슬 중 share개의 구슬을 고르는 가능한 모든 경우의 수를 return 하는 solution 함수를 완성해주세요. 제한사항 1 ≤ balls ≤ 30 1 ≤ share ≤ 30 구슬을 고르는 순서는 고려하지 않습니다. share ≤ balls 입출력 예 balls share result 3 2 3 5 3 10 입출력 예 설명 입출력 예 #1 서로 다른 구슬 3개 중 2개를 고르는 경우의 수는 3입니다. 입출력 예 #2 서로 다른 구슬 5개 중 3개를 고르는 경우의 수는 10입니다. Hi..

[RxSwift] 곰튀김 RxSwift + MVVM 정리

1. 왜 비동기 프로그래밍을 하는가? 생활 예로, 마트에서 물건을 살 때 계산 줄을 서는 것을 생각하면 쉽다. 먼저 온 순서대로 한사람 한사람씩 계산되는 과정이 '동기적 프로그래밍'이다. 여기서, 어떤 사람이 물건을 엄청 많이 샀다던가, 계산 중에 다른 물건을 집어온다거나 할 때, 뒤에 서있는 고객들은 그 문제의 사람이 계산을 마칠 때까지 기다리는 수밖에 없다. 이와 같이, 동기적으로 프로그래밍을 한다면 한 작업이 끝날 때까지 그 뒤의 어떤 작업도 진행되지 않기에, 화면 로딩, 통신 연결 등의 비효율을 높이고, 사용성 또한 급격히 떨어진다. 코드가 한 페이지에서 동기적으로만 일을 하게 된다면, 아마 페이지 최상단에 있는 것부터 하나씩 또 하나씩 로딩이 될 것이며, 설상가상 시작하면 중간에 물릴 수도 없으..

🍎 iOS/RxSwift 2023.01.16

[iOS/Swift] CollectionView의 cell 내용이 다른 cell 내용과 섞이는 이슈 해결

1. Issue 영상과 같이, collectionview 안의 이미지 collectionview의 contents가 스크롤했다가 위로 올라가면 내용이 바뀌는 이슈가 있었음 2. Problem UITableView/UICollectionView의 cell은, 스크롤할 때 스크롤 하기 전 보여주었던 셀을 재사용하기 때문에 이미 이전에 보여주었던 이미지를 사용함으로써, 스크롤했다가 다시 올라가면 이전에 아래로 스크롤했을 때의 셀의 이미지를 보여주게 됨 3. Solution 컬렉션뷰가 셀을 그릴때, 셀의 내용을 초기화하여 뷰를 다시 그리는 'prepareForReuse' 메소드를 override 하여, 이미지를 초기화해준다. 이렇게 이미지를 초기화한 이후에 cellForRowAt을 거쳐 뷰를 다시 그리게된다.

반응형