백준 1000번 Swift 알고리즘 연습
백준 알고리즘 문제 100번을 풀어보았다.
https://www.acmicpc.net/problem/1000
처음 풀 당시 생각보다 당황스러웠다.
Playground라던가 Xcode에서는 쉽게 도달 할 수 있는 난이도 였기에 아무 생각 없이 코딩을 하였는데 계속 틀리더라...
처음에는 뭐가 문제인지 잘 이해를 못했었다. let a 정의해주고.. let b 정의해주고 바로 프린트 하면 되는 거 아닌가! 하는 생각이 들었기 때문이다.
이것저것 찾아보며 고민하다가 이 1000번 문제는 그 전에 쉽게 풀었던 2557번 문제와 아주 큰 차이점이 있다는 것을 깨달았다.
그 차이점은 바로 아래와 같이 2557번 문제에는 없는 '입력'에 대한 기준이 있다는 것.
즉, 1000번 문제는 2557번 문제와는 다르게 '출력'만 진행하는 것이 아닌 '입력'을 진행할 수 있는 환경을 만들어줘야 한다는 것이었다.
(너무나 기초적인 문제이지만 알고리즘 문제에 대한 기본적인 개념이 없는 상태였고.. 지금도 좀 그렇다 ^-^...)
결론적으로 많은 구글링을 통해 다음과 같은 답안을 작성하였다.
import Foundation
var lineArr: [String]
var line = readLine()!
lineArr = line.components(separatedBy: " ")
print(Int(lineArr[0])! + Int(lineArr[1])!)
위 알고리즘보다 시간적으로 더 효율적인 코드가 있을 것이다. 그것은 나중에 천천히 재고민해볼 생각이다.
정리(Today I Learned)
- Swift의 경우 입력시 readLine() 함수를 사용하고, Foundation이 임포트 되어야 사용 가능함
- '첫째줄에 A와 B가 주어진다.'를 만족하기 위해 사용할 수 있는 방법은 다양하지만 그 중 ""(공백)을 이용하여 A와 B를 구분짓는 방법을 사용 가능(lineArr를 통해 문자형 집합을 만들어주고 그 안의 인자들을 ""(공백)으로 분류)
- 정수이기에 lineArr[]집합에 Int처리하여 print