[Swift 코테 기초] 입출력

2022. 2. 10. 20:28Swift 코딩테스트/Swift 코테 기초

728x90

//공부 기록용 포스팅입니다. 틀린 부분이 있을 경우 댓글로 알려주시면 감사합니다! 😎

 

많이 참고했습니다! 감사합니다.

https://lxxyeon.tistory.com/66

 

[iOS] 알고리즘, 코딩테스트 준비하기 - Command Line Tool, LeadLine, Split, Components, map, print 사용하기

Swift로 코딩 테스트 준비, 세팅하기 Swift 입력하기 Swift로 코테를 준비하려고 하니! 어떻게 입력을 받아서 처리하지...? Swift로 입력을 받기 위해선 project 생성시, playground, app이 아닌 새로운 탬플릿

lxxyeon.tistory.com

https://twih1203.medium.com/swift-알고리즘에-필요한-swift-basic-총정리-d86453bbeaa5

 

[Swift] 알고리즘에 필요한 Swift Basic 총정리

Swift로 알고리즘 초초초초보부터 시작해서 정리한 문법들 올립니다

twih1203.medium.com

 

 

 

1. 기본 입력: readLine()

/// - Parameter strippingNewline: If `true`, newline characters and character
///   combinations are stripped from the result; otherwise, newline characters
///   or character combinations are preserved. The default is `true`.
/// - Returns: The string of characters read from standard input. If EOF has
///   already been reached when `readLine()` is called, the result is `nil`.
public func readLine(strippingNewline: Bool = true) -> String?
  • readLine() 함수를 통해서 입력을 받음
  • EOF: 파일 끝(End of File, EOF)은 데이터 소스로부터 더 이상 읽을 수 있는 데이터가 없음을 나타낸다.
  • readLine()의 리턴값은 옵셔널 값으로 옵셔널 바인팅 또는 강제 언래핑 처리 필요
    • 옵셔녈 바인딩-if: 변수에 값이 있다면 값을 할당하는 것, 값이 없는 nil이라면 else문 동작, 미리 확인하는 것과 유사. 즉, 값이 있을 때만 바인딩
    • 강제 언래핑: 일단 무조건 변수 값 가져오는 것, 확실하게 값이 들어있을 때(=nil이 아닐 때) 사용
    • var input = readLine()
      print(type(of: input))
      print(type(of: input!))
      print(type(of: Int(input!)))
      print(type(of: Int(input!)!))
      
      //출력
      //100
      //Optional<String>
      //String
      //Optional<Int>
      //Int
      readLine()은 Optional<String>이고, readLine()!은 String 형이다.String형을 Int형으로 형 변환 시에는 강제 언래핑을 두 번 해줘야 한다. 강제 언래핑을 한 번만 할 시에는 Optional<Int>형 리턴

 

 

1-1. 여러 개 입력: components(seperatedBy:)

https://developer.apple.com/documentation/foundation/nsstring/1413214-components

  • 파라미터로 String -> [String] 배열형으로 리턴
  • Foundation 프레임워크 import 필수
import Foundation

let line = readLine()!
let lineArr = line.components(separatedBy: " ")
let a = Int(lineArr[0])!
let b = Int(lineArr[1])!

print(a+b)

//출력
//1 2
//3

 

 

1-2. 여러개 입력: split(separator:) 

  • separator: 쪼개려는 단위
  • maxSplits: 최대 maxSplits 번의 분할을 수행 -> 리스트는 최대 (maxSplits + 1) 개의 요소를 가짐
  • omittingEmptySubsequences: 리턴값에 빈 배열을 포함하는지 여부
    • 기본값 true: 빈 배열을 포함하지 않음
    • flase: 빈 배열 포함
    • components는 separator가 연속으로 등장한 경우 빈 문자열을 함께 리턴
  • Character -> [Substring] 리턴
  • Swift 표준 라이브러리로 import X
var line = readLine()!.split(separator: " ")
let a = Int(line[0])!
let b = Int(line[1])!
print(a-b)

//출력
//3 2
//1

 

 

2. 출력: print("")

  • item: 0개 이상의 파라미터
  • separator: items가 2개 이상일 때 item 사이마다 출력할 것, 기본값은 공백
  • terminator: items를 모두 출력한 후 마지막에 붙이는 종결자, 기본값은 개행 -> print는 자동 개행
    let a = "A"
    print("a: \(a)")
    
    print(1.0, 2, 3.0, separator: " + ")
    
    for i in 0..<4 {
        print(i, terminator: "/")
    }
    
    //출력
    //a: A
    //1.0 + 2 + 3.0
    //0/1/2/3/Program ended with exit code: 0 <- 개행 X
728x90