코딩테스트 문법 (Swift) - 계속 추가

이창형·2023년 1월 14일
0

Swift문법 박살내기

목록 보기
6/7
post-thumbnail

filter

예시

// num = 3, numlist =[1,2,3,4,5,6,7,8]
// answer = [3,6]
func solution(_ n:Int, _ numlist:[Int]) -> [Int] {
    let answer = numlist.filter { $0 % n == 0 }
    return answer
}
  • filter는 조건에 맞는 요소들을 쉽게 뽑아주는 역할을 한다.

uppercased(), lowercased()

예시

word = hello
word.uppercased() // HELLO

word = HELLO
word.lowercased() // hello
  • 대소문자를 변경해준다

replacingOccurrences

예시

word = aabee
word.replacingOccurrences(of: "a", with: "x") // xxbee
word.replacingOccurrences(of: "a", with: "") // bee
  • 특정 문자열을 제거 / 변경할 수 있다

swapAt(num1, num2)

예시

num1 = 2
num2 = 4
stringArray = [0,1,2,3,4,5]
stringArray.swapAt(num1, num2) // stringArray = [0,1,4,3,2,5]
  • 배열 안의 자리 배치를 도와준다

contains

예시

var word = "hello"
word.contains("h") // true
word.contains("x") // false
  • 특정 문자가 있나 없나를 확인하고 bool값을 반환해준다

enumerated

예시

for (n, c) in "Swift".enumerated() {
    print("\(n): '\(c)'")
}
// Prints "0: 'S'"
// Prints "1: 'w'"
// Prints "2: 'i'"
// Prints "3: 'f'"
// Prints "4: 't'"
  • 배열의 인덱스와 요소에 접근하기 편하다
  • element는 요소 접근 offset은 인덱스 접근이다
    예를들어
    for (n, c) in "Swift".enumerated()가 아닌
    for i in "Swift".enumerated()로 했다면
    i.element, i.offset으로 활용 가능

map 활용

예시

dots = [[3, 1] , [1, 2], [2,6]] 
// x = 3 - 1
var x = dots.map { $0[0] }.max()! - dots.map { $0[0] }.min()!

// 문자열을 배열로 바꿈
let arr = numbers.map { String($0) }
  • 하나씩 뽑아 사용할때 map을 사용한다

예시

var answer = ["1", "2", "3"]

// Int형으로 변환 (map의 축약)
answer.map ({Int($0)!})

// Int형으로 변환 (축약하지 않은 map)
answer.map ({ (value : String) -> Int in return Int(value)! })

// ->은 리턴의 뜻, 즉 value(String 값)을 Int로 
// 리턴하는데 in return(뒤에 있는 것을 적용하여 리턴해라)을 사용하여 리턴한다
  • 형 변환을 할때도 사용한다

reduce

예시

// for in 
let numberArray = [1,2,3,4,5,6,7,8,9,10]
var sum = 0

for number in numberArray {
    sum += number
}

print(sum)
// 55

// reduce
let numberArray = [1,2,3,4,5,6,7,8,9,10]
let sum = numberArray.reduce(0) { $0 + $1 }

print(sum)
// 55
  • reduce는 데이터를 합쳐주기 위해 사용

firstIndex(of: ), lastIndex(of:)

예시

let array = ["하나", "둘", "둘", "셋"]
let firstIndex = array.firstIndex(of: "둘")
let lastIndex = array.lastIndex(of: "둘")

print(firstIndex) // 1
print(lastIndex) // 2
  • firstIndex(of:) 는 배열의 앞에서부터 조회해서 첫번째 일치하는 값의 index를 반환
    lastIndex(of:) 는 배열의 뒤에서부터 조회해서 첫번째 일치하는 값의 index를 반환

suffix()

var phoneNumber = "01011112222"
phoneNumber.suffix(4) // 2222
  • 문자열이나 배열에서 뒤에서 몇개를 구할때 사용

repeating

String(repeating: "수박", count: 3) // 수박수박수박
  • 문자열을 반복할때 사용한다

최대공약수 구하기

func gcd(_ a: Int, _ b: Int) -> Int {
        if b == 0 {
            return a
        } else {
            return gcd(b, a%b)
        }
    }

최소공배수 구하기

func lcm(_ a: Int, _ b: Int) -> Int {
	return a * b / gcd(a, b)
    }

String(n,radix: )

// radix 뒤에 있는 숫자의 진법으로 변환
let flipToThree = String(n,radix: 3)
  • 진법을 변환할때 사용한다

replacingOccurence(of: with:)

var test = "one4seveneight"
print(test.replacingOccurence(of:"one",with:"1") // 14seveneight
  • 문자열에서 특정 문자열을 수정하여 반환할때 사용한다

문자열 인덱스 범위로 뽑기

var array = [0,1,2,3,4,5,6]
var array2 = array[2...4] // [2,3,4]
  • 문자열을 인덱스 범위로 뽑는 방법이다

insert(contentsOf:, at:)

var answer = "0" 
answer.insert(contentsOf: "1", 
at: answer.index(answer.startIndex, offsetBy: 0))

// answer = "10"
  • string 특정 인덱스에 추가할때 사용

for i in stride()

// 12를 포함
// 3,6,9,12
for i in stride(from: 3, through: 12, by: 3) {
    print(i)
}
// 12 미만
// 3,6,9
for i in stride(from: 3, to: 12, by: 3) {
    print(i)
}
  • for문을 통해 원하는 숫자만큼 증가시킬때 사용

소수 찾기

  func isPrime(_ n: Int) -> Bool {
    guard n > 1 else { return false }
    guard n != 2 else { return true }
    
    var isPrime = true
    
    for i in 2...Int((sqrt(Double(n))))+1 {
      if n % i == 0 { // 나누어 떨어지는 숫자가 있으면
        isPrime = false // 소수가 아니다
        break
      }
    }
    
    return isPrime
  }
  • 소수 찾기 함수

isLetter

let Array = ["sd", "d#$"]
Array[0].isLetter // true
Array[1].isLetter // false
  • 문자로만 이루어져있는지 확인해준다

indices

let Array = ["a", "b", "c"]
for i in Array.indices {
	print(i)
    // 0
    // 1
    // 2
}
  • 배열의 범위를 초과하지 않고 안전하게 불러올 수 있다.
profile
iOS Developer

0개의 댓글