josee2
josee2 Devlog
josee2
전체 방문자
오늘
어제
  • 분류 전체보기 (54)
    • Swift (33)
      • 문법 (33)
    • iOS (13)
    • Algorithm (3)
      • 프로그래머스 (1)
      • BOJ (0)
      • 기타 (2)
    • 일상 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 멀티쓰레드
  • 쓰레드
  • 동시
  • 직렬
  • IOS
  • 동기
  • 동시성프로그래밍
  • 프로세스
  • Sync
  • serial
  • 스위프트
  • 서울청년취업사관학교
  • 비동기
  • Async
  • GCD
  • 문자열 템플릿
  • Swift
  • SeSAC
  • 동시큐
  • concurrent

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
josee2

josee2 Devlog

Algorithm/기타

스위프트(Swift) - 입출력 방법(readLine)

2022. 5. 30. 11:55

 

스위프트에선 입력방법으로 readLine() 함수를 제공한다.

 

간단하게 설명하자면 입력받은 것을 Optional String형으로 return하는 함수이다. 여기서 'EOF'란 'End of File'의 약자로 파일의 끝을 의미하는데 터미널에서 엔터가 입력되면 EOF가 처리된다. 즉, 엔터가 입력되면 readLine()이 끝나게 되는 것이다. 이를 사용해 입력하는 예시를 살펴보자.

 


정수(Int) 한 개 입력받기

let input = readLine()
print(type(of: input))

let inputOut = input!
print(type(of: inputOut))

let intVar = Int(inputOut)
print(type(of: intVar))

let result = intVar!
print(type(of: result))

// 한 줄 요약
let input = Int(readLine()!)!


/* 실행결과
3 << 입력
Optional <String> >> 출력
String            >> 출력
Optional <Int>    >> 출력
Int               >> 출력

예제에서 보듯 Optional String으로 리턴하기 때문에 입력하기 위해선 강제 해제 연산자인 '!'를 붙여주어야한다. Int로 형변환 후에 !를 붙여주는 이유는 Int로 형 변환이 안 이루어지는 경우(abc를 Int형으로 변환) nil 값을 반환해야하기 때문이다.

 


공백 단위 입력받기

공백을 단위로 입력을 받으려는 경우 split( )함수를 이용하면된다.

let input = readLine()!.split(separator: " ")
print(input)

/* 실행결과
j o s e e  << 입력
["j", "o", "s", "e", "e"] >> 출력

입력된 값을 문자열로 바꾸고 나서 " " 기준으로 자르고 배열로 저장한다.

 


개행 단위 입력받기

let input1 = readLine()!
let input2 = readLine()!

print(input1, input2)

/* 실행결과
hello << 입력
josee! << 입력
hello josee! >> 출력

hello + 엔터에서 1번 readLine()이 끝나고, josee! + 엔터에서 2번 readLine()이 끝나 이를 튜플로 묶어 출력해주면 다음과 같이 출력이 이루어진다.

 


정수 여러 개 입력받기

정수 여러 개를 입력받을 경우엔 map() 이라는 함수를 이용하면 된다.

 

map함수에 대해 잠깐 알아보면 map 함수는 데이터를 변형하고자 할 때 사용하는 함수이다. 기존 데이터를 변형하여 새로운 컨테이너를 만드는데, 기존 데이터는 변형되지 않는다는 특징을 가지고 있다. for - in 구문으로도 구현이 가능하지만, map을 사용시 간결성, 재사용성, 컴파일러 최적화의 장점을 가진다.

// for - in 구문 사용
let numArr = [1, 2, 3, 4, 5]
var mulArr = [Int]()

for num in numArr {
	mulArr.append(num * 2)
}

print(mulArr)
// [2, 4, 6, 8, 10]

// map 사용
let numArr = [1, 2, 3, 4, 5]
let mulArr = numArr.map( {(number: Int) -> Int in
	return number * 2
})
print(mulArr)
// [2, 4, 6, 8, 10]

// 클로저 문법으로 축약
let numArr = [1, 2, 3, 4, 5]
let mulArr = numArr.map { $0 * 2 }
print(mulArr)
// [2, 4, 6, 8, 10]

이런식으로 이용이 가능하다. 정수 여러개를 입력받으려면 다음과 같이 사용하면된다.

let input = readLine()!.split(separator: " ").map { Int($0)! }
print(input)

/* 실행결과
1 2 3 4 << 입력
[1, 2, 3, 4] >> 출력

 

 

저작자표시 (새창열림)

'Algorithm > 기타' 카테고리의 다른 글

Xcode에서 알고리즘 문제 풀기 전 설정하기  (0) 2022.05.27
    'Algorithm/기타' 카테고리의 다른 글
    • Xcode에서 알고리즘 문제 풀기 전 설정하기
    josee2
    josee2
    iOS 개발자 지망생의 공부기록입니다.

    티스토리툴바