티스토리 뷰
ㅎㅎㅎ글을 많이 쓰게 되네요 ..확실히 코딩하면서 많이 배우는 것 같아요..핳
요새 올라오는 글들은 딱 swift라는 언어를 정리한 글들이 아닌, 제가 궁금해서 찾아본 그런 개념들 밖에 없으니 참고하시길 바랍니다XD
일단, 제가 글을 쓰게 된 이유는...
백준의 N찍기라는 문제입니다. 평범하죠?
~~응 맞았어~₩
백준의 절대불변의 법칙
응 짱쉬워~
응 풀었어~~~~~
~ 잠시 뒤 ~
...ㅋ
네..그렇습니다..오류....그래요..오류..왜났지..
저는 당연히 저렇게 하면 될 줄 알았습니다. 5부터 0까지면 그냥 하면 되는거 아닌가요??!?!?
역시 컴파일러는 프로그래머의 상식을 벗어나줘야 재밌는거 아니겠습니까
fatal error: Can't form Range with upperBound < lowerBound
해석하자면
치명적인 오류 : upperBound < lowerBound를 사용하여 Range를 형성 할 수 없습니다.
ㅎ.ㅎ
그래서 저는 이 오류를 해결하기 위해...구글을 뒤져보았습니다.
역순으로 for문 돌리는 건 언젠가 꼭 필요하자나요..
뒤에서부터 for문 도는법
두가지 방법이 있습니다.
첫번째 : reversed()함수를 이용한다.
?reversed?리버스?거꾸로 해주는거? 네 맞습니다. 어떻게하면 될까요?
for i in (1...Int(input)!).reversed()
{
print(i)
}
짠! 짱쉽죠!! 정말 ^^ 이거랑 Int(input)!...1 이랑 뭐가 다른건지 ^^ 모르겠지만...
그래도 정말 직관적이죠?
지금 주어진 순서 반대로 for문을 돌아! 라는 뜻이니까요.
짠~~ㅎㅎㅎ
이 reversed()함수는 여기에만 쓰일 수 있는 것은 아니랍니다.
이렇게도 쓸 수 있어요 ㅎㅎㅎ
이제 좀 아실 것 같나요?
그렇다면 다음방법으로 넘어가보죠.
두번째 방법 : stride()함수를 이용한다.
stride()..?
그 뜻을 살펴보자면
성큼성큼 걷다.(V)
걸음, 걸음걸이, 진전(N)
이라는 뜻을 가지고 있어요.
흐음 그럼 Xcode에서는 어떻게 stride를 쓰고 있을까요?
for i in stride(from: 5 , to: 0, by: -1)
{
print(i)
}
in 다음에 stride 함수를 넣어주게 되는데요, 이 함수도 정말 직관적이죠?
stride ( from : x , to : y , by : z )
전진할거야 x부터 y까지 z만큼의 보폭으로
라는 뜻으로 볼 수 있어요.
by는
이러한 뜻을 가지고 있기 때문이죠.
그럼 역순으로 어떻게 돌까요?
네!!from에 큰 값, to에 작은값을 넣고 by로 뭘 하면 될까요 ㅎㅎㅎㅎ 네 -(마이너스)값을 넣어주면 됩니다.
저는 하나씩 줄이고 싶기 때문에 -1을 by의 파라미터로 주면 되겠네요.
그럼 한번 해보겠습니다.
우리는 input을 받아야 하기 때문에.. 위에서 했던것 처럼
import Foundation
var input = readLine()!
for i in stride(from: Int(input)! , to: 1, by: -1)
{
print(i)
}
자 한번 해볼까요?
ㅇ?
왜 2까지 밖에 안나오지....
위에서 말한 reversed()도, 일반적인 앞에서 하는 for문도 둘다
1부터였는데요..
그냥 똑같이 from - 사용자가 입력한 수 ~ to - 1까지 한건데..
왜 stride는 2까지 밖에 안나왔을까요?
그 이유는...딱히 없고 그냥 그렇게 만들어졌기때문이죠 ^^....
ㅎㅎ 위 영어를 간단하게 해석해보자면, stride(from:to:by:)는 to파라미터에 있는 수를 제외하고 카운트합니다.
만약 to파라미터에 있는 수를 포함시키고 싶다면 stride(from:through:by:)를 사용하세요 :)
라고 하네요!!!
우리는 stride(from : 사용자가 입력 한 수 to : 1 by : -1)로 했으니 1이 포함되지 않고 5,4,3,2까지만 나오는건 맞는 결과네요 ㅎㅎ
그럼 위에서 얘기해준대로 1까지 나오게 한번해봅시다.
짠~~
어때요 잘 나오죠?
P.S.
저는 이걸보고 '영어'의 문법상 범위를 나타낼 때 to는 미포함이고, through는 포함인가? 라는 궁금증이 들어서 엄청 찾아봤어요. 먼저 to를 찾아봤는데 뭐를 미포함한다 이런 건 찾을 수 없었고,
through는
이런 뜻을 찾을 수 있었어요.
근데 보통 from 1 to 10하면 1부터 10까지를 나타내잖아요??보통?????????
그래서 막 영어 오픈채팅방 들어가서 막 물어보고 그랬는데 다들 to는 포함인것 아니냐고 그러셨어요...이건 네이티브도 모를듯 막 이러시면서 XD..
물어물어본 결과
이런..결론을 냈습니다.
아무튼!!!우리는 오늘 역순으로 for문을 도는법에 대해 알아보았는데요, stride함수같은경우에는 역순이 아닌 일반적인 경우에도 쓸 수 있겠죠? 대신 to, through를 주의해서 써주면 좋을 것 같네요 ㅎㅎ
예에~~
'Swift' 카테고리의 다른 글
Swift3 ) 입력 받는 것과 동시에 Int로 변환하는법 (0) | 2017.05.29 |
---|---|
Swift3 ) String쪼개기 (1) | 2017.05.29 |
Swift3 ) map개념 / String을 Int로 변환하는 방법 (4) | 2017.05.22 |
Xcode - swift 파일 여러개 놓고 코딩하는 법 (2) | 2017.05.20 |
Xcode - statements are not allowed at top level오류 해결법 (8) | 2017.05.18 |
- swift sort
- 제이슨 파싱
- Accessibility
- swift delegate
- 스위프트
- 스위프트 문법
- Git
- IOS
- 피아노
- SwiftUI
- np-hard
- Swift
- WWDC
- actor
- 회고
- swift array
- Combine
- UIBezierPath
- WKWebView
- iOS delegate
- github
- swift tutorial
- WidgetKit
- Xcode
- swift 공부
- FLUTTER
- np-complete
- ios 13
- fastlane
- swift3
- Total
- Today
- Yesterday