https://programmers.co.kr/learn/courses/30/lessons/42748

 

코딩테스트 연습 - K번째수

[1, 5, 2, 6, 3, 7, 4] [[2, 5, 3], [4, 4, 1], [1, 7, 3]] [5, 6, 3]

programmers.co.kr

제출한 답안

import Foundation

func solution(_ array:[Int], _ commands:[[Int]]) -> [Int] {
    var cutArray = [Int]()
    var returnArray = [Int]()
    
    for command in commands {
        cutArray = [Int]()
        
        for num in array[(command[0]-1)...(command[1]-1)] {
            cutArray.append(num)
        }
        
        cutArray.sort()
        returnArray.append(cutArray[(command[2]-1)])
    }
    
    return returnArray
}

'정렬을 내가 해야할까?' 잠시 생각해봤다가 찾아보니 swift에서 정렬을 지원하네요.

sort() 이거면 배열 안의 내용 자체를 정렬해줍니다. 이거 말고도 리버스 등등 여러 메소드를 지원합니다.

정렬 등 지원하는 메소드에 대한 공식문서입니다.

https://developer.apple.com/documentation/swift/array/1688499-sort

 

Apple Developer Documentation

 

developer.apple.com


다시 풀어본 답안

import Foundation

func solution(_ array:[Int], _ commands:[[Int]]) -> [Int] {
    return commands.map({ array[($0[0]-1)...($0[1]-1)].sorted()[$0[2]-1] })
}

map을 사용해보았습니다.

array에 접근해서 실행하는 commands의 각 요소 부분이 똑같은 실행을 반복하기에 map으로 처리가 가능합니다.

for num in array[(command[0]-1)...(command[1]-1)] {
  cutArray.append(num)
}

returnArray.append(cutArray.sorted()[(command[2]-1)])

이 부분을 map으로 처리한 것이고 

sorted() 로 정렬된 배열을 얻어와 바로 처리하였습니다.

https://programmers.co.kr/learn/courses/30/lessons/12922?language=swift 

 

코딩테스트 연습 - 수박수박수박수박수박수?

길이가 n이고, "수박수박수박수...."와 같은 패턴을 유지하는 문자열을 리턴하는 함수, solution을 완성하세요. 예를들어 n이 4이면 "수박수박"을 리턴하고 3이라면 "수박수"를 리턴하면 됩니다. 제한

programmers.co.kr

처음 제출한 답안

func solution(_ n:Int) -> String {
    assert(n <= 10000, "자연수가 아닙니다.")
    
    var subak = ""
    
    for i in 1...n {
        subak.append(i % 2 == 1 ? "수" : "박")
    }
    
    return subak
}

다시 풀어본 답안

func solution(_ n:Int) -> String {
    return "\(String(repeating: "수박", count: n / 2))\(n % 2 == 0 ? "" : "수")"
}

String(repeating:count:) 로 반복할 문자열을 생성할 수 있다.

특정 문자열의 반복이 필요할 때 유용한 생성자입니다.

 

var str = String(repeating: "글자", count: 2)

생성자이기 때문에 이런식으로도 활용이 가능합니다.

'iOS > 알고리즘' 카테고리의 다른 글

[프로그래머스]기능개발  (0) 2021.08.23
[프로그래머스]모의고사  (0) 2021.08.22
[백준]1789번: 수들의 합  (0) 2021.08.15
[프로그래머스]K번째수  (0) 2021.08.12
[프로그래머스]짝수와 홀수  (0) 2021.08.12

https://programmers.co.kr/learn/courses/30/lessons/12937

 

코딩테스트 연습 - 짝수와 홀수

정수 num이 짝수일 경우 "Even"을 반환하고 홀수인 경우 "Odd"를 반환하는 함수, solution을 완성해주세요. 제한 조건 num은 int 범위의 정수입니다. 0은 짝수입니다. 입출력 예 num return 3 "Odd" 4 "Even"

programmers.co.kr

 

func solution(_ num:Int) -> String {
    num % 2 == 0 ? "Even" : "Odd"
}

num.magnitude 로 절대값을 얻을 수 있다.

 

'iOS > 알고리즘' 카테고리의 다른 글

[프로그래머스]기능개발  (0) 2021.08.23
[프로그래머스]모의고사  (0) 2021.08.22
[백준]1789번: 수들의 합  (0) 2021.08.15
[프로그래머스]K번째수  (0) 2021.08.12
[프로그래머스]수박수박수박수박수박수?  (0) 2021.08.12

'iOS > 문법' 카테고리의 다른 글

클로저 고급 - 다양한 클로저 표현  (0) 2021.08.19
클로저 기본  (0) 2021.08.19

뷰 컨트롤러에서 직접 호출하는 방식을 프레젠테이션 방식이라고 합니다.

구현하는 방법을 알아보겠습니다.

 

뷰 컨트롤러 호출 구현

화면 UI 구성

이동할 뷰 컨트롤러에 Storyboard ID 지정

화면 전환을 구현할 버튼 객체 선언 및 뷰컨트롤러 호출 구현

@IBAction func moveNext(_ sender: Any) {
  // 이동할 뷰 컨트롤러 객체를 StoryBoardID 정보를 이용하여 참조
  let uvc = self.storyboard!.instantiateViewController(withIdentifier: "SecondVC")

  // 화면 전환할 때의 애니메이션 타입
  uvc.modalTransitionStyle = UIModalTransitionStyle.coverVertical

  // 인자값으로 뷰 컨트롤러 인스턴스를 넣고 프레젠트 메소드 호출
  self.present(uvc, animated: true)
}

 

이전 화면으로 돌아가기

뷰 컨트롤러 파일 만들기

SecondViewController.swift 파일 생성 후 UIViewController 상속

 

두번째 화면에 뷰 컨트롤러 할당

SecondViewController 에 이전 페이지 메소드 구현

import UIKit

class SecondViewController: UIViewController {
    
    @IBAction func back(_ sender: Any) {
    	// dismiss 로 호출 해제
        self.presentingViewController?.dismiss(animated: true)
    }
}

 

호출을 구현할 때에는 주체가 뷰 컨트롤러 자신이지만, 

self.present(uvc, animated: true)

호출을 해제(dismiss)할 때에는 호출을 한 대상(이전 ViewController)에게 요청하는 것이다.

self.presentingViewController?.dismiss(animated: true)

 

이전 화면과 이후 화면은 서로 참조 관계에 있다.

이전 화면(ViewController)은 presentedViewController 속성에 저장되 있는 포인터를 통해 이후 화면(SecondViewController)을 참조하고, 이후 화면(SecondViewController)는 presentingViewController 속성에 저장되 있는 포인터를 통해 이전 화면(ViewController)를 참조하게 된다.

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

DispatchQueue 특징  (0) 2021.09.05
비동기에서의 NSLock() 간단 비교  (0) 2021.09.05
12.2.2. 영화관 정보 API  (0) 2021.09.02
12.3. 영화관 목록 화면 구현하기  (0) 2021.09.02
이미지 비동기 처리하기  (0) 2021.08.14

+ Recent posts