Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
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 31
Tags
more
Archives
Today
Total
관리 메뉴

Olive Study Room

[백준 알고리즘] #2439번 : stride, print(_:separator:terminator:) 본문

cs/알고리즘

[백준 알고리즘] #2439번 : stride, print(_:separator:terminator:)

Olive Dev 2021. 6. 14. 15:49

stride(from:to:by:) 

시작 value부터 to value까지의 시퀀스를 반환하는데, 마지막 value는 포함하지 않고 지정된 양만큼씩 뛰어넘는다.

 

Declaration

func stride<T>(from start: T, to end: T, by stride: T.Stride) -> StrideTo<T> where T : Strideable

 

Example

for i in stride(from: 1, to: 5, by: +1) {
    print(i)
}
//1
//2
//3
//4

-> 이처럼 마지막 인덱스틑 출력이 되지 않는다!

 

 

포함할 수는 없을까?

 

 

stride(from:through:by:)

시작 value에서 마지막 value까지의 시퀀스를 만환하는데, 마지막 value를 포함하여 지정된 양만큼 뛰어넘는다.

 

Declaration

func stride<T>(from start: T, through end: T, by stride: T.Stride) -> StrideThrough<T> where T : Strideable

 

Example

for i in stride(from: 1, through: 5, by: +1) {
    print(i)
}
//1
//2
//3
//4
//5

print(_:separator:terminator:)

주어진 항목의 텍스트 표현을 표준 출력에 쓴다.

 

Parameter

1. separator

print("This", "is", "peng", "dev", separator: "/")
// This/is/peng/dev

여러 항목이 있을 때 separator을 사이사이 넣어준다!

 

2. terminator

for i in 1...5 {
    print(i)
}
// 1
// 2
// 3
// 4
// 5

for i in 1...5 {
    print(i, terminator: "")
}
// 12345

디폴트는 \n(줄 내림이고 따로 설정해줄 수 있다.


# 2439번

 

1. 단순 for문으로 푼 경우

- i가 line이 되기 전까지만 돌려야함

let line = Int(readLine()!)!
for i in 1...line {
    var str: String = ""
    if i != line {
        for _ in 1...line-i {
            str.append(" ")
        }
    }
    for _ in 1...i {
        str.append("*")
    }
    print(str)
}

2. print(_, terminator: "")

let line = Int(readLine()!)!
for i in 1...line {
    for _ in 0..<line-i {
        print(" ", terminator: "")
    }
    for _ in 1...i {
        print("*", terminator: "")
    }
    print("")
}

3. stride 사용

let line = Int(readLine()!)!
for i in 1...line {
    var str = ""
    for _ in stride(from: line, to: i, by: -1) {
        str.append(" ")
    }
    for _ in stride(from: 0, to: i, by: 1) {
        str.append("*")
    }
    print(str)
}

 

Comments