プログラマ-ソート

25033 ワード

に感銘を与える
この探索を学んだ後、ソート問題を解いた.
アレイを事前にソートすることで、
問題の与えられた条件を考慮する必要がないような状況になったようだ.

K番目の数


配列分割[1.2]
最後のインデックスendIndex、最初のインデックスstartIndex(1から)
import Foundation

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

func solution(_ array:[Int], _ commands:[[Int]]) -> [Int] {
    let testCase: Int = commands.count
    var mutableArray:[Int] = array
    var answer: [Int] = []

    for i in 0 ... testCase-1 {
        let first = commands[i][0]
        let second = commands[i][1]
        let index = commands[i][2]
        let newArray = mutableArray[first-1...second-1].sorted()
        let answerValue = newArray[index-1]
        answer.append(answerValue)
    }

    return answer
}

大数


https://caution-dev.tistory.com/4
https://tngusmiso.tistory.com/25
// +로 문자열 결합해보기
print("a"+"b")      //ab
let a = 123
print("\(123)"+"b") //123b
// 스트링으로 변환해서 610, 106을 생성한 후 내림차순으로 정렬하기
let sorted = numbers.sorted {"\($0)\($1)" > "\($1)\($0)"}   //[6, 2, 10]

// 첫번째가 0인 경우는 [0, 0] 뭐 이런 경우이고, "00"이 아니라 "0"을 리턴해야한다
if sorted[0] == 0 {
    return "0"
}

return sorted.reduce("") { $0 + "\($1)" }   // 스트링으로 출력하기
//let b = sorted.map{String($0)}.joined() //상동

H-Index


大数を基準にすれば降順で先にソートできると思いますが、それは思いもよらなかったと思います.
https://kocensd.github.io/プログラマー-H-Index(SWIFT)/
https://mungto.tistory.com/27
func solution(_ citations:[Int]) -> Int {
    let n = citations.count //n편
    
    let sortedCitations = citations.sorted(by: >)
    
    for (i, element) in sortedCitations.enumerated() {
        if i >= element {
            return i
        }
    }
    
    // 인용횟수가 논문개수보다 많은 경우 [10, 50, 100]
    return citations.count
}

かんすうしきプログラミング


https://velog.io/@msi 753/関数-プログラミング-切り替え
https://velog.io/@msi 753/関数-プログラミング-2-切り替え
https://velog.io/@msi 753/関数-プログラミング-3マッピング-フィルタ-リフレッシュ-切り替え
https://velog.io/@msi 753/関数-プログラミング-4-モナド-切り替え
わあ、文法しか勉强していないと、本当に全然覚えていません.😅
それは言わないわけにはいかない.😂

コードテストに役立つものを整理します。


エンクロージャのサムネイル


コンテキストタイプの類推

let reversed: [String] = names.sorted() { (first, second) in
    return first > second
}

ショートカットパラメータ名

let reversed: [String] = names.sorted() {
    return $0 > $1
}

💥 暗黙的な戻り表示(単行)

let reversed: [String] = names.sorted() { $0 > $1 }

演算子関数(>)


関数名>
public func > <T: Comparable>(lhs: T, rhs: T) -> Bool
let reversed: [String] = names.sorted(by: >)

地図

//후행 클로저 사용
doubledNumbers = numbers.map { $0 * 2 }
let evenNumber: [Int] = [0, 2, 4, 6, 8]
let oddNumber: [Int] = [1, 3, 5, 7, 9]
let multiplyTwo: (Int) -> Int = { $0 * 2}

let doubledEvenNumber = evenNumber.map(multiplyTwo)
let doubledOddNumber = oddNumber.map(multiplyTwo)

へいぶん


マージCombine
草の値段をつける.
let numbers: [Int] = [1, 2, 3, 4, 5, 6, 7]

var result: Int = numbers.filter { $0.isMultiple(of: 2) }.map{ $0 * 3 }.reduce(0) { $0 + $1 }
print(result)   //36

var array = [1,2,3,4]
array.reduce(0, +) // 숫자 합이 나타남. 문자열 합치기도 가능

map, joined



フィルタ



forEach