본문 바로가기

Algorithm/문제 풀이

Swift Algorithm) 기본 셋팅 - Command Line Tool, 예제 입력 받기

 

안녕하세요 소들입니다 🙃

후~~~ 알고리즘도 공부해보고 싶어서

손을 대어야 하는데...........

 

어디서부터 뭐부터 대야할지 뷁!!!!!

다짜고짜 백준 알고리즘 켜서 문제 유형이나 보려고 하는데

 

 

 

 

너무 쉬운 문제를 선택했는데 난관에 봉착..

Playground에서 스위프트로 입력값 어케받지?ㅎㅎㅋ

c언어 때는 뭐 scanf... 뭐 이런거 썼는데.. 

 

그래서 이번 포스팅은!!!

스위프트로 입력 값 받기임

 

아직 알고리즘 공부는 시작도 안했지만

칼을 든 김에 무라도..

 

 

 

 

1. Playground는 안되신댄다

 

먼저...... 난 당연히 알고리즘을 풀라면 Playground를 생각했음

하지만.. Playground에선 입력값을 받지 못함ㅠㅠ

흙흙

 

플레이그라운드는 샌드박스이기 때문에 Input이 없다고 함..

샌드박스라는 것은 외부로부터 들어온프로그램이 보호된 영역에서 동작해

시스템이 부정하게 조작되는 것을 막는 보안형태 어쩌고 저쩌고....;;

따라서 입력을 받고 싶다면 actual  application인 Command Line Tool을 이용해서 해야한다고 해야 함...

 

 

뭐..

따라서 Command Line Tool 을 이용해야함

 

 

 

 

2. Command Line Tool을 열자

 

 

 

 

여시고

 

 

 

 

여시고

언어 Swift로 해서 만들면

 

 

 

 

짜쟌 ~_~ 완성 

 

 

 

 

3. input을 받아보자

 

자 이제 핵심! input을 받는 것을 해보겠음

먼저, Swift에서 input을 받는 것은 다음 메서드를 사용함

 

 

 

 

readLine 메서드를 이용하면 입력을 받을 수 있셈

 

참고로

내가 무언갈 입력하기 전(엔터치기 전)까지는 위 코드에서 대기하다가

입력한 순간(엔터친 순간) 다음 코드로 넘어감

 

 

근데 readLine 메서드를 살펴보면

 

 

 

 

꺄아아악

리턴값이 옵셔널 타입이다

 

뭐 입력값이 항상 있을 거라는 가정 하에 

옵셔널 강제 해제 연산을 써도 되지만

안전하게 if let을 통해 옵셔널 바인딩을 해줄 것임

 

 

 

 

자 이렇게 쓰면 내가 입력한 값이 그대로 print 될 것임

 

 

 

 

요롷게!!!!! 

 

자, 근데 위 코드는 내가 원하는 입력 값을 치고 엔터를 누르면

그대로 다음 코드가 실행되며 프로그램이 종료

 

왜냐? 

readLine 메서드는 말 그대로

딱 한 줄만 읽어들이고 그 값을 Optional String으로 반환함

따라서 Enter를 치는 순간, 야!! 한 줄이 끝났다!!!!!하고

입력 받는 작업을 끝내버리는 것임

 

 

만약 근데 입력 값을 두번 받는 경우는 어캄?

 

 

 

이렇게 처음 입력 값 누르고 엔터 치고 또 입력값 누르고 싶을 수도 있잖셈

 

 

그럴땐

두번쓰면 됨 💩

 

 

 

 

이런 식으루 원하는 입력 수 만큼 쓰면 됨 :)

 

 

 

쨔쟌 👀

 

 

 

 

 

4. 입력값이 문자열인데 어떻게 구분하조..?

 

자 위 코드의 마지막 문제점...

 

 

 

 

나는 입력 값은 1 2 를 입력하고

이 둘 값을 이용해 연산을 할 것임

 

근데 위 readLine으로 읽은 값 input의 타입은 String이기 때문에

1, 2에 각각 접근할 수 있는 게 아닌

"1 2"

이런 형태의 문자열로 저장되어 있음

 

 

따라서!! 이를 내가 원하는 형태로 구분지어 주는 작업이 필요함

 

위 예시에선 입력값 1,2를 공백( )으로 구분하고 있으니

공백을 기준으로 입력받은 값을 배열의 요소로 저장하는 것임

 

 

이처럼 String의 값을 원하는 모양으로 쪼개어서 배열로 만들어주는 메서드가 있는데

두 가지를 보통 사용함

 

 

 

 

먼저 사용법을 보기 전에 두 메서드의 차이점을 정리할 것임

 

 

  split components
import Foundation X O
Return Type [Substring] [String]
장점 Foundation을 import하지 않아서
용량이 늘어나지 않음
Return Type이 String 배열임
단점 Return Type이 Substring 배열임
(map 함수를 이용하면 되긴 함)
Foundation을 import 해서
용량이 늘어남

 

 

 

가장 큰 차이는 Foundation을 import 하느냐 마냐이고,

Return Type이 다르다는 것임

 

 

간단하게 사용 법만 보여주고 끝내겠음

이 메서드들의 사용법은 직접 써보면서 확인해 보시길.. +_+

 

 

 

 

4-1. split

 

리턴 값

 

 

 

 

 

 

4-2. components

 

 

 

리턴 값

 

 

 

 

 

.

.

 

근데 Foundation Framework를 import하면

알고리즘 코드의 용량이 커지기 때문에,,,

split을 이용하되 map 메서드를 쓰는 것이 어떨가... ;)...

(라고 생각했는데 배열의 요소가 많아지면 map 함수를 사용함으로 인해 시간 비용이 발생할 것 같은ㄷ...ㅔ..)

 

 

 

 

 

5. 혹시나... 아주 혹시나... 입력 값을 어디에 입력할지 모를 분들을 위해..

 

위에서 gif 파일에도 첨부했지만

Command Line Tool에서 입력값은

 

 

 

 

요 기다 입력하면 됨...!!!

마우스 클릭하면 커서가 깜빢깜빢 거릴거임

그곳에 입력하면 됨!!

 

 

 

 

 

 

이번년, 알고리즘에 많이 도전하길

바라며ㅠ,,ㅠ 포스팅 끝 .......

 

질문이나 피드백은 댓글 주세욥 :)

'Algorithm > 문제 풀이' 카테고리의 다른 글

Swift Algorithm) 1차원, 2차원 배열의 합  (4) 2021.04.05


Calendar
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
최근 댓글
Visits
Today
Yesterday