View
생각날 때마다 추가 중 : 2021월 6월 8일
readLine 함수

Swift로 알고리즘 문제를 풀 때, 백준 알고리즘처럼 입력을 받아야 할 때 Swift는 readLine() 함수를 써야 합니다.
Playground에선 이 함수를 사용할 수 없고 위의 순서대로 Command Line Tool로 프로젝트를 생성해야 합니다.
readLine() 코드를 구현하면 콘솔 창에 자유롭게 텍스트를 입력할 수 있습니다.
문제에서 주어진 데이터가정수인 경우로 가정한 예시입니다.
문제에 주어진 경우의 데이터가 문자열 또는 다른 형식일 경우 알맞은 타입으로 변경하세요.
또 문제 풀기에선 nil을 입력받을 경우가 없기 때문에 강제 언래핑(!)을 사용했습니다.
1. 한 줄만 입력받는 경우
let inputValues = Int(readLine()!)!
2. 한 줄만 입력받으나 2개의 수가 주어진 경우
let inputValues = readLine()!.split(separator: " ").map { Int($0)! }
let A = inputValues[0]
let B = inputValues[1]
만약 주어진 숫자가 0과 1인 경우 보통 0 1처럼 띄어쓰기를 통해 주어집니다. 이때 split(separator:maxSplits:omittingEmptySubsequences:) Instance Method를 사용하면 separator 파라미터로 전달된 문자를 기준으로 쪼개서 배열로 만들어줍니다.
3. 두 줄을 입력받는 경우
let inputValues = Int(readLine()!)!
let inputValues = Int(readLine()!)! //입력 순서도 일치
4. N개의 줄만큼 입력받는 경우
var lines = [Int]()
for _ in 0..<N { lines.append(Int(readLine()!)!) }
split VS component
split과 component는 입력받은 문자열을 배열로 리턴해주는데 공통점이 있지만,
component의 경우 공백(" ")만 입력할 경우, 공백을 기준으로 배열의 앞 뒤에 요소를 각각 한 개씩 추가해주기 때문에 주의해야 합니다.
" ".split(separator: " ") // []
" ".components(separatedBy: " ") // ["", ""]
각 자릿수 빠르게 구하기
let N = 2640
N / 1000 // 2
N % 1000 / 100 // 6
N % 100 / 10 // 4
N % 10 // 0
// 결과는 동일하지만 상대적으로 비효율적
let ArrayN = Array(String(N)).map { Int(String($0))! }
ArrayN[0] // 2
ArrayN[1] // 6
ArrayN[2] // 4
ArrayN[3] // 0
알고리즘 기초 강좌
영리한 프로그래밍을 위한 알고리즘 강좌 (권오흠 교수님) 링크
- 사용언어 : JAVA, C++, C 등
Object C ➡ Swift 변환 사이트
오브젝트 C 언어를 Swift로 바꿔주는 사이트 (C#, C++도 바꿔주기 때문에 알고리즘 공부할 때 유용) 링크
'Algorithm' 카테고리의 다른 글
[Swift] 최대공약수 (0) | 2021.05.22 |
---|---|
Codility 회원가입 방법 (0) | 2021.05.17 |
[Swift] 프로그래머스 모의고사 문제 (feat. Dictionary) (0) | 2020.10.28 |