swift 168

[Swift] BOJ 11726 2 x n 타일링

BOJ 11726 2 x n 타일링 ✅ BOJ 11726 2 x n 타일링 이 문제는 생각보다 어려웠다. 사실 나동빈 알고리즘 dp편에서 본 기억이 있는데, 이를 직접 풀어보려니까 도저히 생각이 나지 않았다. 사실 책의 해설도 잘 이해가 가지 않았는데, dp를 보면 볼수록 수학적인 사고가 강력하게 필요한 것 같다. 풀이와 해설이 이해가 가지 않아서 다른 분의 블로그를 참고하였다. 1x2, 2x1 두개의 타일이 있다. n = 1 : | 1개 n = 2 : ||, = 2개 n = 3 : |||, =l, l= 3개 n = 4 : llll, ll=, l=l, =ll, == 5개 n = 5 : lllll, lll=, ll=l, l=ll, =lll, l==, =l=, ==l 8개 이런 패턴을 찾을 수 있다. 참고한..

[Swift] BOJ 10610번 30

BOJ 10610번 30 ✅ 후 오랜만에 생각보다 어려웠음 처음에 문제보고 잘 이해가 안가서 문제 설명 다른 사람이 해둔거 쓱 본다음에 풀려고 했는데, 어떻게 해야할 지 몰라서 재귀를 돌렸음 🟠 [처음 내 접근 방식] 1. 인풋을 String으로 받는다. 2. 받은 String을 [Int] 배열로 만든 후 내림차순으로 정렬한다. 3. 0이 포함되어 있지 않다면, 30의 배수가 될 수 없음으로 바로 "-1"을 리턴하고 종료한다. ex) "2931" -> [9, 3, 2, 1] 4. 재귀를 통해서 9xxx, 3xxx 등 조합 가능한 네자리 수를 전부 만들어 낸다. 4-1. 이때 재귀의 종료 조건에서 4자리 수가 완성되면, 30으로 나누어서 30의 배수인지 아닌지 판단하고, 이 값들 중에서 max값을 갖고 있..

[Swift] BOJ 1931회의실 배정

BOJ 1931회의실 배정 ✅ 알고리즘 자체는 쉬웠음 먼저 정렬을 해야하는데, 끝나는 시간을 기준으로 수행하며 만약 그 끝나는 시간이 같다면 시작 시간이 빠른 것을 앞에다가 배치함. 그 이후로는 그리디(그냥 for문 다 돌리라는 말)로 풀면 되는데, 현재 시간과 시작시간을 비교해서 시작시간이 같거다 더 뒤에 있으면 카운트를 증가시키고 현재 시간을 끝나는 시간으로 바꿔주면 된다. 포스팅을 한다는 건 생각보다 오래 걸렸단 말이겠지? 백준 문제가 너무 불친절해서,, 테스트 케이스가 하나만 있던데, 당연히 정렬이 되어있는줄 알았음. 정렬이 안되어 있어서 그래서 정렬하니까 완료 나는 처음에 85%쯤에서 막혔는데 반례를 찾았음 [반례] 3 3 3 2 3 3 3 올바른 답: 3 let iterator : Int! =..

[Swift] 프로그래머스 LV1. 소수 찾기

프로그래머스 LV1. 소수 찾기 ✅ 소수 찾기 푸는데 나름 시간을 고려했다고 생각했는데 시간 초과가 남. 이런 친구들이 제일 화나면서 도전정신 들게 만드는데, 암튼 개선한거 같이 보자 func solution(_ n:Int) -> Int { // 소수찾는 알고리즘 var count = 0 var flag = true for target in stride(from: 3, through: n, by: 2) { // 어차피 짝수는 2말고는 다 소수 아님 flag = true // print("target \(target)") for divisor in stride(from: 3, to: target, by: 2) { // print(divisor) if target % divisor == 0 { flag = ..

[Swift] 프로그래머스 LV1. [1차] 다트 게임

프로그래머스 LV1. [1차] 다트 게임 ✅ 와 풀긴 풀었는데, 진짜 삽질 많이했네 1. 처음에는 문자열 하나하나 받아서 특정 한 스트림을 구성했을 때, 값을 계산하기로 함. - 문제점: 10의 경우에는 1, 0으로 분리되어서 로직에 문제가 발생함. 2. [개선] 그렇다면 정규표현식을 사용하고자 함. - 문제점: 이건 공부를 하고 사용해야할 것 같아서 그냥 다른 방법 ㄱ 3. [개선] split을 사용하기로 함. - 이 글을 포스팅 하는 이유임. - 문제점: 옵션의 경우에는 어떻게 처리할지 감이 잡히지 않음. - 해결했다고 생각 4. [개선] 답이 틀리다고 나옴 - 문제점: 옵션의 (*)의 경우에는 전체가 아니라 이전 점수에만 두배를 하는 로직이었음. - 알고리즘 개선 ✅ 회고 예나 지금이나 문제를 쓱..

[Swift] 프로그래머스 LV1. [1차] 비밀지도

프로그래머스 LV1. [1차] 비밀지도 func solution(_ n:Int, _ arr1:[Int], _ arr2:[Int]) -> [String] { var answer: [String] = [] for i in 0.. String in if bit == "1" { return "#" } else { return " " } } while(cherry.count < n) { cherry.insert(" ", at: 0) } answer.append(cherry.joined()) } return answer } 10진수를 2진수로 바꾸어서 해야하나..? 생각했었는데 그럴 필요가 없더라 암튼 이지 했는데, 그냥 뭔가 음 ,, 오랜만에 비트 연산자 써보는 것 같아서 이렇게도 쓸 수 있다고 포스팅!

[Swift] 프로그래머스 LV1 실패율(시간 초과 해결)

프로그래머스 LV1 실패율(시간 초과 해결) ✅ 우선 5번이랑 9번이 시간 문제로 통과가 안되었다. 그래서 나는 코드를 개선해야함을 느꼈는데 방법은 크게 두 가지가 있다. ✅ 1. dictionary -> tuple로 변경 ✅ 2. filter -> for문으로 변경 이 두개를 통해 해결했다. 결론 : 코딩 테스트에서는 튜플 적극 활용하고 filter보다는 for문을 더 사용해보자. 아.. 시간 초과로 통과가 안된다. func solution(_ N:Int, _ stages:[Int]) -> [Int] { var dict = [Int: Double]() // [스테이지: 실패율] var player = stages.count for i in 1...N { let current = stages.filter..

iOS 최상단 ViewController + UIWindow (keywindow)

iOS 최상단 ViewController + UIWindow (keywindow)최상단에 위치한 ViewContoller를 재귀를 이용해 안전하게 찾기  최상단 ViewController를 찾는 코드각 컨트롤러의 객체 타입에 맞게 재귀를 이용해 최상단 뷰 컨트롤러를 찾는 코드 public extension UIViewController { func topMostViewController() -> UIViewController { if let presentedViewController = self.presentedViewController { return presentedViewController.topMostViewController() } ..

[iOS/Swift] init과 super.init에 대해서 알아보자. 🤔

init과 super.init에 대해서 알아보자. ✅ init과 super.init에 대해서 알아보자. 개발을 하면서 테스트코드 작성을 위해서 init으로 프로퍼티들을 초기화 시키다 보니 init에 대해서 궁금증이 생겼다. 그럼 정리 ㄱㄱ SwiftUI를 통해서 코드를 작성해 보았음 ✅ init에 대해서 큰 틀만 잡고 가자면 1. 초기화 메소드의 이름은 init으로 통일된다. 2. 매개변수의 개수, 이름, 타입은 임의로 정의할 수 있다. 3. 매개변서의 이름과 개수, 타입이 서로 다른 여러 개의 초기화 메소드를 정의할 수 있다. 4. 정의된 초기화 메소드는 직접 호출되기도 하지만, 대부분 인스턴스 생성 시 간접적으로 호출된다. ✅ 아래 코드를 보자. class Student { var age: Int v..

iOS 오픈소스 라이선스 페이지 (뱅크샐러드)

iOS 오픈소스 라이선스 페이지 (뱅크샐러드)오픈소스 라이선스 페이지를 만들어보고자 함.뱅크샐러드에서 오픈소스에 채용 이스터에그를 넣어두었는데 사이드 프로젝트에서도 도입하고 했고, 인턴하는 회사에서도 넣자고 해서 겸사겸사 만들어보고자 함.코드 파일아래는 샘플 파일     ✅ 환경 Swift 5 Xcode 13 RxSwift 6 SnapKit Then 폴더 구조간단한 페이지라 MVC 기반으로 빠르게 작업하고자 함.  🟠 UIViewController+.swiftimport Foundationimport UIKitimport Thenextension UIViewController { func showOpenSourceWebVC(data: OpenSourceModel) { let vc =..