난이도 : ★☆☆☆☆
사용언어 : Swift
문제
쉬운 문제임에도 작성한 이유
C++ 로 풀때는 input값을 그냥 콘솔 창에다 치면 됐었다.
하지만 Playground로 푸려니 input값 받아 오는것에서 부터 막혔다.
적어놓으면 덜 까먹어도 찾아보니까 정리해놓는다.
import Foundation
let input = readLine()
readLine
을 쓰면 된다고 하는데.. 나는 궁금하다 readLine이 어디까지 읽는건지.
\n
이 포함된 String은 어쩔껀데? 해서 찾아봤다.
readLine
?► 어디까지 읽는겨
음음 String?
optional로 return하네.
설명 주석을 읽어보자
Return a string read from standard input through the end of the current line or EOF is reached.
이라한다.
한번 보자고.
한 줄 읽는다 정말.
► 사용법
return 이 optional(String?
)이기 때문에 optional binding 해서 사용한다.
let input = readLine()
if let str = input {
// do smt with `str`
}
문제를 책으로 봐서 일단 책에다가 생각나는 풀이를 적었었다.
C++에서 처럼 String을 Array로 바꿔준다는 생각으로 풀었는데 Swift에선 언젠가 해본적이 있는거 같은데 무지성으로 했나보다 기억이 안난다. 그래서 찾아봤다.
방법은 세가지 있다고 한다.
let name = "King"
//1.
let arr = Array(name)
//Print arr : ["K", "i", "n", "g"]
//2.
let mapArr = name.map { String($0) }
//Print mapArr : ["K", "i", "n", "g"]
//3.
var appendCharArr = [Character]()
for char in name{
appendCharArr.append(char)
}
//Print appendCharArr : ["K", "i", "n", "g"]
이런 방법이 있다고 한다.
func sol(string input: String) {
var arr = input.map { String($0) }
let length = arr.count
var leftSum = 0
var rightSum = 0
for _ in 0..<length / 2 {
let leftSide = arr.removeFirst()
let rightSide = arr.removeLast()
guard let leftComponent = Int(leftSide),
let rightComponent = Int(rightSide) else { return }
leftSum += leftComponent
rightSum += rightComponent
}
if leftSum == rightSum {
print("LUCKY")
} else {
print("READY")
}
}
guard let
을 이용해서 nil
이면 return 하게 해준다 ~ 풀이는 쉬웠는데 Swift로 처음 풀어서 이렇게 적을게 많아졌다고 한다.