Swift로 알고리즘 문제 풀 때 팁 정리

Subin Kim·2021년 3월 21일
0
post-thumbnail

수정 날짜 : 2021.03.21

입력 받기


정수 1개 입력 받기

var n = Int(readLine()!)!

공백 단위로 정수형 배열 입력 받기

var arr = readLine()!.split(separator: " ").map { Int($0)! }

// 이게 더 빠름
var arr = readLine()!.split(separator: " ").map { Int(String($0))! }

출력


소수점 이하 k번째 자리까지 출력

  • 소수점 이하 k+1번째 자리에서 반올림하여 소수점 이하 k번째 자리까지 출력
var a = 1.637999
var b = round(a * 1000) / 1000

let c = String(format: "%.3f", b) // 1.638

// 또는
//var c = String(format: "%.3f", (a * 1000).rounded() / 1000)

Math


n 제곱

import Foundation

pow(3, 2) // 9

String


String은 값 타입(value type)이므로 다른 함수나 메서드로부터 생성되면 값을 복사해서 생성하기 때문에 수정해도 원본 문자열이 수정되지 않는다.

문자열 길이

let strings = "abcde"
print(strings.count) // 5

Array


기본 값으로 배열 생성

  • repeating메서드와 count메서드를 이용
var threeDoubles = Array(repeating: 0.0, count: 3)
// threeDoubles : Double 타입의 [0.0, 0.0, 0.0]

2차원 배열 생성

  1. 빈 배열 생성 후 입력받기
let n = Int(readLine()!)!

var house: [[Int]] = []

for _ in stride(from: 0, to: n, by: 1) {
  house.append(readLine()!.split(separator: " ").map { Int(String($0))! })
}

print(house)

입력
3
26 40 83
49 60 57
13 89 99

출력
[[26, 40, 83], [49, 60, 57], [13, 89, 99]]

  1. repeatingcount메서드를 이용해서 생성하기
  • INF 값으로 채워진 (n + 1) x (n + 1) 크기의 2차원 배열
var graph = Array(repeating: Array(repeating: INF, count: n + 1), count: n + 1)
profile
기록블로그

0개의 댓글