본문 바로가기

Algorithm

백준 - 10951번

728x90

사실 문제는 엄청(?) 쉬운데 내가 잘 몰랐던 개념이라서 정리함 ..

 

문제 링크임

문제 요약

입력) 두 개의 숫자를 입력 받는다.
출력) 각 케이스의 더한 결과 값을 출력한다.

*문제의 출제의도
EOF가 무엇인지 아는가.

 

사실 이 문제는 뭐 .. 대단한 알고리즘이 있거나 코드가 엄청 신기하다거나 그런 것이 아니라 .. EOF를 알고 있는가? 문제에 코드로 나타낼 수 있는가?에 대한 것이었음

 

이 문제에 대한 답은 아래와 같다. ⬇️

import Foundation

while let input = readLine() {
    print(input.split(separator: " ").map{ Int($0)! }.reduce(0, +))
}

 

여기서 EOF란 무엇인가?

딱 봐도 무엇인가의 약자처럼 생기지 않았음? 맞음.

 

EOF란, End Of File의 약자로 파일의 끝을 의미한다.

Swift 터미널 Input에서는 엔터가 입력 되면 EOF 처리가 된다.

그리고 위에서 readLine()으로 입력 값을 받고 있는데, enter를 누르게 되면 readLine() 하나가 끝나게 되는 것이다.

 

문제에서 몇 개의 케이스를 테스트 할 것인지 함께 입력을 받지 않기 때문에 EOF를 통해서 readLine()을 반복해야 한다.

그러므로 while문에 위와 같이 조건을 걸면,

> EOF를 받았을 때 readLine()에서 nil이 아니면(= 입력 값이 있다면) true 상태로

> nil이 맞다면 바로 엔터를 친 것이므로 false가 되어서 while문이 종료된다.

 

*만약 EOF로 분기처리를 하지 않으면, 무한루프를 돌기 때문에 런타임 에러가 나게 될 것이다. 

 

EOF를 기억하자.

'Algorithm' 카테고리의 다른 글

백준 - 1차원 배열  (1) 2022.08.27
백준 - 1110번 (더하기 사이클)  (0) 2022.08.23
백준 - 구구단  (0) 2022.08.20
Set을 잘 쓰자.  (0) 2022.08.20
백준 - 입출력과 사칙연산  (0) 2022.08.17