https://www.viget.com/articles/animated-ios-launch-screen/

 

Animate Your iOS Splash Screen | Viget

Learn how to animate iOS launch screens however you want!

www.viget.com

 

반응형

https://github.com/raywenderlich/swift-algorithm-club

반응형

https://github.com/morizotter/KeyboardObserver

 

GitHub - morizotter/KeyboardObserver: For less complicated keyboard event handling.

For less complicated keyboard event handling. Contribute to morizotter/KeyboardObserver development by creating an account on GitHub.

github.com

 

매번 Notification으로 받고 하는게 뭔가 안좋아보여서 참고할 오픈소스....

 

나중에 보자

반응형

https://xho95.github.io/swift/programming/language/grammar/2017/02/28/The-Swift-Programming-Language.html

 

Swift 5.5: Swift Programming Language (스위프트 프로그래밍 언어)

 

xho95.github.io

애플 공식 swift 5.5 문서를 번역하는 블로그.

반응형

'iOS > swift' 카테고리의 다른 글

메모. 스위프트 알고리즘  (0) 2022.01.12
KeyboardObserver~  (0) 2021.10.19
UIPickerView 의 텍스트 색상 변경하는 방법  (0) 2021.06.17
프로그래머스 - 프린터  (0) 2021.05.06
프로그래머스 - 기능개발  (0) 2021.05.05

pickerView는 label이나 button처럼 손쉽게 텍스트에 대한 접근을 할 수 없다.

생긴것부터가 배열이니 배열 전체에 대해 어떻게 해줄까를 정해줘야되서 그렇게 해둔듯 하다.

그러한 부분을 어떻게 할지를 정하는 함수가 pickerview에는 있다.

 

func pickerView(_ pickerView: UIPickerView, attributedTitleForRow row: Int, forComponent component: Int) -> NSAttributedString?

 

라는 함수 인데

텍스트를 그냥 넣어 줄때 사용하는 

func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String?

와 사용이 비슷하다.

 

아래는 빨간색으로 변경하는 예시를 플레이그라운드에서 만들어 보았다.

텍스트 설정을 변경하는 키값이 상당히 많은데 그중에서도

foregroundColor

를 사용했다.

 

위 소스를 플레이그라운드에서 돌리면 아래와 같이 나온다.

 

아래는 키들에 대한 애플문서이다.

https://developer.apple.com/documentation/foundation/nsattributedstring/key

 

Apple Developer Documentation

 

developer.apple.com

 

반응형

'iOS > swift' 카테고리의 다른 글

KeyboardObserver~  (0) 2021.10.19
Guide Swift Programming Language 5.5  (0) 2021.10.01
프로그래머스 - 프린터  (0) 2021.05.06
프로그래머스 - 기능개발  (0) 2021.05.05
프로그래머스 - 모의고사  (0) 2021.05.04

programmers.co.kr/learn/courses/30/lessons/42587

 

코딩테스트 연습 - 프린터

일반적인 프린터는 인쇄 요청이 들어온 순서대로 인쇄합니다. 그렇기 때문에 중요한 문서가 나중에 인쇄될 수 있습니다. 이런 문제를 보완하기 위해 중요도가 높은 문서를 먼저 인쇄하는 프린

programmers.co.kr

이번 문제는 배열이 주어지고 정렬하는 문제로 보았다.

 

실 답을 구하려면 굳이 id를 정하고 정렬할 필요는 없어 보이지만 

실제 프린터라고 생각해서 하나의 작업에 대해 id를 각각 추가하여 작성해봤다.

 

정렬 순서는 문제에서 제시해준 3단계를 그대로 따라하면 간단히 된다.

 

난 총 세부분으로 소스를 나눠 작성했다

 

첫번째 - 주어진 priorities에 각각 id를 지정

두번째 - priorities를 정렬(

문제에서 주어짐, 첫번째 목록의 우선순위가 대기중인 작업의 우선순위보다 낮다면 무조건 대기순위 뒤로 이동 

대기중인 작업중 우선 순위가 더 큰게 없다면 대기순위에서 제거)

 

세번째 - 찾으려는 타깃이 언제 완료되는가 리턴 

 

 

  struct Work {
    let id:Character
    let priority:Int
  }
  
  func solution(_ priorities:[Int], _ location:Int) -> Int {
    var works = [Work]()
    var endArray = [Work]()
    var lastId:Character = "a"
    for priority in priorities {
      let work = Work(id: lastId, priority: priority)
      lastId = Character(Unicode.Scalar((lastId.unicodeScalars.first!.value) + 1)!)
      works.append(work)
    }

    guard location < works.count else { return -1 }
    let findTarget = works[location]
    
    while works.count > 0 {
      let target = works[0]
      var notFind = true
      for i in 1 ..< works.count {
        // 뒷 대기열에 큰게 있다면 notFind = false
      }
      if notFind {
      // 대기열에서 제거 endArray에 추가
      }
    }

    for i in 0 ..< endArray.count {
    // 찾으려는 id와 같은것의 i값 리턴
    }
    
    return -1
  }

 

 

전체 소스는 아래 깃허브 페이지에 있다.

github.com/wiwi-git/Programmers-learn/blob/master/swift/Practice/Practice/Printer.swift

 

wiwi-git/Programmers-learn

Contribute to wiwi-git/Programmers-learn development by creating an account on GitHub.

github.com

 

반응형

programmers.co.kr/learn/courses/30/lessons/42586

 

코딩테스트 연습 - 기능개발

프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는

programmers.co.kr

스택/큐 분류에 들어있는 문제다.

 

퍼센트지가 들어있는 배열(progresses)이 각각 루프 1당(문제에서의 하루) speeds 배열의 값 만큼 진행되어서

퍼센트지가 100%로 다 채워졌을때가 몇 루프인지 계산하는 문제이다.

 

계산시에 progresses의 값이 들어있는 순서대로 뒷 값이 작은게 몇개인지 저장하고 그 값을 리턴해주면 된다.

 

나는 우선 퍼센트지가 전부다 찼을때의 루프수를 저장해놓기위해 complete배열을 progresses배열의 수 만큼 작성해두고.

progresses를 foreach문을 통해 

내부에 while문으로 퍼센트치를 채워넣으면서 루프수(foreach문안의 변수 day)를 저장했다

 

그후 while문을 통해 complete배열이 앞값과 뒷값을 비교해가며 뒷값이 작을때 +1 뒷값이 클때 다시1 부터 카운트식으로 하여 코드를 짯다.

 

총 두 두분으로 나눠서 했다.

 

    var complete = Array<Int>(repeating: 0, count: progresses.count)
    
    for (i, persent) in progresses.enumerated() {
      var day = 0
      var persent = persent
      while persent < 100 {
        persent += speeds[i]
        day += 1
      }
      complete[i] = day
    }
    
    var i = 0
    var result = [Int]()
    while i < complete.count {
      var commit = 1
      if (i + 1) >= complete.count {
        result.append(commit)
        break
      }
      
      for k in (i + 1) ..< complete.count {
        if complete[i] >= complete[k] {
          commit += 1
        } else { break }
      }
      
      i += commit
      result.append(commit)
    }
    return result

라인 자체는 적어보이는데 두 번째 루프문부분, 값비교하는 부분이 뭔가 찝찝하다 

하지만 채점결과는 통과하니 그냥 넘어가련다. 생각하기 귀찮아졌다.

 

아래링크는 해당 소스가 올려놓은 깃허브 페이지이다.

 

github.com/wiwi-git/Programmers-learn/blob/master/swift/Practice/Practice/FunctionDevelopment.swift

 

wiwi-git/Programmers-learn

Contribute to wiwi-git/Programmers-learn development by creating an account on GitHub.

github.com

 

반응형

programmers.co.kr/learn/courses/30/lessons/42840

 

코딩테스트 연습 - 모의고사

수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는

programmers.co.kr

이 글을 쓰면서 전체 라인수를 좀 줄여보고자 변경했는데도 라인수가 좀 크다.

저 사이트는 다른이의 답도 볼 수 있는 서비스를 제공하는데 보고 오니 정말 내 소스가 좀 부끄러워진다.

 

 

 

이번 문제는 배열의 탐색을 묻는 문제인가 싶다.

세명의 사람이 있고 

첫번째 사람은 1,2,3,4,5 ... 1,2,3,4,5 순으로 답을 적고

이런식으로 세명의 정답 적는 배열이 주어진다.

 

세명의 점수를 정답 배열에서 계속 비교해야해서 

해당 내용을 난 TestPaper라는 구조체를 만들어 정리했다.

 

그 후 각각의 총점을 계산하고

각각의 점수를 기준으로 정렬하고 가장 앞에 있는 사람을 뽑는것으로 톱을 정하고

혹시 톱과 같은 점수가 있는지 filter함수를 통해 사람을 추가로 뽑았다.

  struct TestPaper {
    let id:Int
    private let loopAnsers:[Int]
    private var loopIndex:Int = 0
    var score = 0
    var answer: Int {
      mutating get {
        let index = loopIndex
        self.loopIndex += 1
        if loopIndex >= loopAnsers.count { self.loopIndex = 0 }
        return self.loopAnsers[index]
      }
    }
    
    init(id:Int,loopAnsers:[Int]) {
      self.id = id
      self.loopAnsers = loopAnsers
    }
  }
  
  func solution(_ answers:[Int]) -> [Int] {
    var people:[TestPaper] = [
      TestPaper(id: 1, loopAnsers: [1,2,3,4,5]),
      TestPaper(id: 2, loopAnsers: [2,1,2,3,2,4,2,5]),
      TestPaper(id: 3, loopAnsers: [3,3,1,1,2,2,4,4,5,5])
    ]
    // calc score
    for answer in answers {
      for index in 0 ..< people.count {
        if answer == people[index].answer {
          people[index].score += 1
        }
      }
    }
    
    // get top
    let top = people.sorted(by: {$0.score > $1.score}).first!
    
    // get result
    var result = [Int]()
    for person in people.filter({ $0.score == top.score}) {
      result.append(person.id)
    }
    return result
  }

중간에 그냥 주석으로 때워도 될부분이 생각나지 않아 이번편은 모든 부분을 소스로 올렸다.

 

아래 링크로 가면 전체 클래스를 볼 수 있다

 

github.com/wiwi-git/Programmers-learn/blob/master/swift/Practice/Practice/MockTest.swift

 

wiwi-git/Programmers-learn

Contribute to wiwi-git/Programmers-learn development by creating an account on GitHub.

github.com

 

반응형

+ Recent posts