본문 바로가기
📖 Problem Solution

백준프로그래밍 for문 10번,11번 Swift

by Fomagran 💻 2020. 1. 29.
728x90
반응형

10번. 첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제

하지만, 오른쪽을 기준으로 정렬한 별(예제 참고)을 출력하시오.

ex) 5

    *

   **

  ***

 ****

*****

핵심: stride알고있니? terminator알고있니?

stride는 from부터 to까지 by값을 더해줘

terminator는 안에 들어간 값을 더해서 새로운 라인에 하지말고 똑같은 라인에 더해줘

위 문제를 보면 공백이 4개 3개 2개 1개로 줄어들어야 하고 별은 1개 2개 3개 4개 5개까지 늘어나야한다.

그러므로 두개의 포문이 존재해야하는데 우선 가장 바깥쪽 포문엔 입력값만큼 반복하라고 시키고 그 안에다가

공백을 입력값부터 i값까지 차례로 -1만큼 줄어들면서 새로운라인말고 붙여줘 그러면 i값이 1이라면 첫번째 반복엔 공백이 4개가 되고 

그 다음으로 와서 별은 0부터 i값까지 1만큼 늘려줘 이것도 새로운라인말고 바로 붙여줘 

그 다음 안에 있는 포문을 나와서 프린트를 하고 터미네이터를 안쓰면 자동으로 새로운 라인으로 되기 때문에 반드시 밖에 프린트를 해줘야 한다.

import Foundation

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

11.첫째 줄에 N과 X가 주어진다. (1 ≤ N, X ≤ 10,000)

둘째 줄에 수열 A를 이루는 정수 N개가 주어진다. 주어지는 정수는 모두 1보다 크거나 같고, 10,000보다 작거나 같은 정수이다.

X보다 작은 수를 입력받은 순서대로 공백으로 구분해 출력한다. X보다 작은 수는 적어도 하나 존재한다.

ex)

입력

10 5

1 10 4 9 2 3 8 5 7 6

출력

1 4 2 3

핵심:터미네이터 알고 있니?

import Foundation

let nx = readLine()!
let numbers = readLine()!

let nxarr = nx.components(separatedBy: " ")
let numbersarr = numbers.components(separatedBy: " ")
let n = Int(nxarr[0])!
let x = Int(nxarr[1])!


for i in 0...n-1{
    if Int(numbersarr[i])! < x {
        print(numbersarr[i],terminator: " ")
    }
  
}

보너스

랜덤값을 줘야하는 줄 알고 찾아봤다. 0부터 2미만까지 랜덤숫자를 만들어준다.

var random = Int(arc4random_uniform(2))

728x90
반응형

댓글