Swift - 입력받기
Swift를 사용해서 입력받기
1. 프로젝트 세팅
Playground는 input을 지원하지 않기 때문에 Xcode를 이용하여
Command Line Tool 프로젝트를 생성 후 코드를 실행해야 한다.
2. 단일 값 입력받기
readLine()
함수를 이용하여 콘솔창으로 입력을 받을 수 있다.
- 결과값은 항상
Optional<String>
으로 반환된다. - 입력받은 값을 Int형으로 사용하려면 다음과 같은 과정을 거쳐야 한다.
let a = readLine() //5
print(type(of: a)) //Optional<String>
let unwrappingA = a!
print(type(of: unwrappingA)) //String
let intA = Int(unwrappingA)
print(type(of: intA)) //Optional<Int>
let intUnwrappingA = intA!
print(type(of: intUnwrappingA)) //Int
다음과 같이 축약이 가능하다.
let a = Int(readLine()!)!
3. 문자열 자르기
split()
을 이용하여 공백을 기준으로 문자열 자르기가 가능하다.
let name = readLine()! //n a m e
print(type(of: name)) //String
let splitName = name.split(separator: " ")
print(type(of: splitName)) //Array<Substring>
let closerSplitName = splitName.split { $0 == " " } //클로저 이용
print(type(of: closerSplitName)) //Array<Substring>
Split()
은Array<Substring>
을 반환하기 때문에String
으로 사용하기 위해선String
으로 형변환을 해주어야 한다.
4. 문자열 자르기2
components()
를 이용해 Array<Substring>
이 아닌 Array<String>
을 반환받을 수 있다.
import Foundation
let name = readLine()! //n a m e
print(type(of: name)) //String
let comName = name.components(separatedBy: " ")
print(type(of: comName)) //Array<String>
Array<String>
을 반환받을 수 있다.split()
과 달리components()
는Foundation
을 import해줘야 사용이 가능하다.
5. 정수 여러개 입력받기
map과 클로저를 이용한다.
let vars = readLine()!.split(separator: " ").map { Int(String($0))! }
print(type(of: vars))
Int($0)!
보다Int(String($0))!
의 속도가 좀 더 빠르다고함
참고
6. 개행 단위로 입력받기
readLine()
을 여러번 쓴다.
let a = readLine()
let b = readLine()
print(a, b)
엔터를 칠때마다 하나의 readLine()
입력이 완료된다.
7. 연속적으로 입력받기
1, 2, 3, 4, 5
를 12345
처럼 연속적으로 입력받을때 배열로 먼저 변환하여 처리한다.
let vars = Array(readLine()!) //12345
print(vars) //["1", "2", "3", "4", "5"]
print(type(of: vars)) //Array<Character>
let intVars = vars.map { Int(String($0))! }
print(intVars) //[1, 2, 3, 4, 5]
print(type(of: intVars)) //Array<Int>
요약
- 정수 입력받기
let a = Int(readLine())!`
- 정수 여러 개 입력
let a = readLine()!.split(separator: " ").map { Int(String($0))! }
- 문자열 한 개 입력
let a = readLine()!
- 문자열 여러 개 입력
let a = readLine()!.split(separator: " ")
let b = readLine()!.split { $0 == " " }
- 연속적인 입력
let a = Array(readLine()!).map { Int(String($0))! }
파이썬 하다가 스위프트보니 어질어질 하네요....
Author And Source
이 문제에 관하여(Swift - 입력받기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@skinike/Swift-입력받기저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)