View

생각날 때마다 추가 중 : 2021월 6월 8일


readLine 함수

Create a new Xcode project > macOS > Command Line Tool

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
Share Link
reply