본문 바로가기
TIL(Today I Learned)

2024.05.02 Today I Learned

by 승환파크 2024. 5. 2.

이번에는 프로그래머스가 아니라 백준에서 알고리즘을 푸는데 백준에서는 입력값을 String 타입으로 직접 입력을 해준다.

따라서 프로그래머스처럼 함수를 작성하는 방법이 아닌 직접 입력을 받는 코드를 작성해야 한다.

문자열 입력 받는 방법

let input = readLine()!

print(input)
print(type(of: input))
// 입력 : abc123
// 결과 
// abc123
// String

 

문자열을 입력받는 방법은 위 코드 처럼 readLine() 함수를 통해 입력을 받을 수 있다. 하지만 readLine() 함수를 사용하면 optional 타입으로 값이 들어오게 된다. 따라서 강제 옵셔널 해제 연산자를 사용해 input 에 옵셔널이 아닌 문자열이 들어오게 할 수 있다. (백준 같은 경우 무조건적으로 입력이 들어오고 빈 값이 들어올 일이 없기때문에 사용한다.)

 

숫자 입력 받는 방법

보통 백준에서는 숫자를 입력하는 경우가 많다. 이 때 readLine() 함수를 통해 입력을 받게 되면 숫자 데이터가 아닌 문자열로 데이터가 들어오게 된다. 따라서 숫자를 사용하고 싶을 경우 문자열로 입력받은 값을 Int 타입으로 형 변환을 해주면 숫자 타입으로 들어오게 된다.

let inputNumber = Int(readLine()!)!

print(inputNumber)
print(type(of: inputNumber))
// 입력 : 1234
// 결과
// 1234
// Int

 

위 코드처럼 형 변환을 진행하여 숫자 데이터로 사용할 수 있다.

 

여러 숫자를 한번에 배열로 입력받는 방법

백준에서 숫자를 한개만 입력하는 경우도 있지만 한번에 여러개의 숫자 입력이 들어오는 경우도 존재한다. 이 때 문자열을 위에서 사용한 방식으로 변환을 하려하면 오류가 발생하게 된다. 따라서 여러개의 숫자가 입력되는 경우는 아래의 코드 처럼 작성을 해서 사용하면 된다.

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

// 입력 : 1 3 5 7 9
// 결과
// [1, 3, 5, 7, 9]
// Array<Int>

 

이 경우는 보통 입력이 "1 2" 처럼 한 칸을 띄워서 입력받는 경우에 사용한다.

이 외에 띄어쓰기 없이 붙어있는 경우 배열로 저장하고 싶다면 아래 코드처럼 작성해서 사용할 수 있다.

let input = Array(readLine()!).map{ Int(String($0))! }
print(input)
print(type(of: input))

// 입력 : 13579
// 결과
// [1, 3, 5, 7, 9]
// Array<Int>

'TIL(Today I Learned)' 카테고리의 다른 글

2024.05.07 Today I Learned  (1) 2024.05.07
2024.05.03 Today I Learned  (1) 2024.05.03
2024.04.30 Today I Learned  (0) 2024.04.30
2024.04.29 Today I Learned  (0) 2024.04.29
2024.04.26 Today I Learned  (1) 2024.04.26