본문 바로가기

전체 글

(206)
[Swift] 14889 스타트와 링크 (조합) https://www.acmicpc.net/problem/14889 14889번: 스타트와 링크 예제 2의 경우에 (1, 3, 6), (2, 4, 5)로 팀을 나누면 되고, 예제 3의 경우에는 (1, 2, 4, 5), (3, 6, 7, 8)로 팀을 나누면 된다. www.acmicpc.net 생각 스타트 팀과 링크 팀 두개의 팀으로 나누기 때문에 두개의 팀 모두 인원은 전체인원 / 2 명 -> 조합으로 경우의 수를 모두 구해서 팀원의 능력치가 가장 작은 방법을 구합니다. 능력치를 구하는 방법은 같은 팀일 때만 (여기서는 visited 배열을 사용) 능력치를 더해주었습니다. 조합문제를 Swift로 푸는 것은 처음인데 알고리즘을 푸는 방법은 동일해서 코드도 언어만 다르지 동일 백준문제에서도 요즘은 Swift로..
[iOS] Diffable Data Source (CollectionView, TableView) UICollectionViewDiffableDataSource에 대한 이해를 자세하게 하기 위해 작성하였습니다. TableView, CollectionView 에서 사용하는 DataSource를 구성하는 방법에는 두가지가 있습니다. UICollectionViewDataSource protocol The methods adopted by the object you use to manage data and provide cells for a collection view. 데이터를 관리하고 collection view에 대한 cell을 제공합니다. UICollectionViewDiffableDataSource The object you use to manage data and provide cells for ..
[iOS] Identifiable 프로토콜 https://developer.apple.com/tutorials/app-dev-training/making-reminders-identifiable#Make-the-Model-Identifiable Apple Developer Documentation developer.apple.com Apple의 UIKit Tutorial (미리알림 앱)을 보고 공부한 내용을 정리한 글입니다. diffable data source는 collection view의 각 항목 ID를 나타내는 identifier list를 저장합니다. 이전 강의에서는 미리알림의 title 제목을 identifier로 지정하여 저장했는데 미리알림의 제목을 변경하거나 동일한 제목의 미리 알림(Reminder)이 있다면 그 cell을 나타내는..
[Swift] Lv2.위장 (Dictionary) https://programmers.co.kr/learn/courses/30/lessons/42578?language=swift 코딩테스트 연습 - 위장 programmers.co.kr 아무 생각없이 c++ 처럼 풀다가 아 Swift 인데 값이 없을 땐 Int 값을 더해주지 못하는구나.. nil 이니까 당연하지 라는 생각으로 무지성 코딩으로 for문과 if 문으로 풀었습니다.. 절대 이거보다 더 이쁘게 코드를 짤 수 있겠다 싶어서 다른사람들의 풀이를 보면서 반성과 깨달음을.. 전체코드 import Foundation func solution(_ clothes:[[String]]) -> Int { var result = 1 var clothesDict: Dictionary = [:] for cloth in..
[iOS] extension + Generic where https://developer.apple.com/tutorials/app-dev-training/making-reminders-identifiable Apple Developer Documentation developer.apple.com 오늘도 Apple 의 튜토리얼을 따라하다가 extension 에서 where 을 추가해서 사용하는 것을 보고 궁금해서 글을 적어봅니다. extension Array where Element == Reminder { func indexOfReminder(with id: Reminder.ID) -> Self.Index { guard let index = firstIndex(where: { $0.id == id }) else { fatalError() } return in..
[iOS] Format the Date and Time https://developer.apple.com/tutorials/app-dev-training/displaying-cell-info Apple Developer Documentation developer.apple.com Apple UIKit 튜토리얼 배운 것을 공부하여 정리하였습니다. 우선 배운 것을 정리하면 Foundation 프레임워크를 사용하고 해당하는 장소에 따라 시간을 비교하여 오늘인지 아닌지, 오늘이라면 'Today', 오늘이 아니라면 'Mar 8' 이렇게 나타내는 방법을 배웠습니다. Foundation 프레임워크의 Date 구조체를 extension해서 dayAndTimeText String 변수를 만들었습니다. dayAndTimeText extension Date { var dayAn..
[Swift] 2941 크로아티아 알파벳 (replacingOccurrences 함수) https://www.acmicpc.net/problem/2941 2941번: 크로아티아 알파벳 예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다. 크로아티아 알파벳 변경 č c= ć c- dž dz= đ d- lj lj nj nj š s= ž z= www.acmicpc.net replacingOccurrences() 함수를 사용하였습니다. String 문서에는 없던 함수인데 NSString 에 존재하는 함수였습니다. https://developer.apple.com/documentation/foundation/nsstring/1412937-replacingoccurrences 정의를 보면 func replacingOccurrence..
[Swift] 2779 블라인드 (문자열) https://www.acmicpc.net/problem/2799 2799번: 블라인드 첫째 줄에 M과 N이 공백으로 구분해서 주어진다. (1 ≤ M, N ≤ 100) 다음 줄에는 현재 건너편 아파트의 상태가 주어진다. 모든 창문은 문제 설명에 나온 것 처럼 4*4 그리드로 주어진다. 또, 창문과 www.acmicpc.net 예전에는 문제를 풀다가 굳이 Swift 로 풀어야할까 라는 생각을 많이 했었는데 요즘에는 굳이 Swift 로 풀어서 언어에 더 친숙해지자는 목표로 문제를 풀고있습니다..ㅋㅋㅋ 블라인드 상태가 0개 ~ 4개 인 상태를 blidState 딕셔너리에 Dictionary 형태로 저장하였습니다. 그리고 M개의 창문 줄만큼 for문을 돌고 각 창문 줄의 창문 갯수(N개) 만큼 for문을 돌아서..