Today I Learned

20210826~20210829 백준 swift - for문 -1

돌맹이시터 2021. 8. 30. 02:44

for문 예제 1~11단계 (2739, 10950, 8393, 15552, 2741, 2742, 11021, 11022, 2438, 2439, 10871)

 

 

2739 구구단

var a = Int(readLine()!)!
for count in 1...9 {
	print("\(a) * \(count) =", a*count)
}

 

10950 A+B-3

var a = Int(readLine()!)!
for _ in 1...a {
	let b = readLine()!.split(separator:" ")
	let c = b.map{Int($0)!}
	print(c[0]+c[1])
}

 

8393 합

var num = Int(readLine()!)!
var sum = 0
for count in 1...num {
	sum += count
}
print(sum)

 

15552 빠른 A+B

 

코드 작성했으나 시간 초과 결과를 얻음

fread와 여러 바이트를 한 번에 읽고, 정수를 읽어야 할 때마다 미리 읽어둔 문자열로부터 정수를 파싱하면 된다고 하는데

일단 low level code를 위해 UnsafeMutableRawPointer라는 걸 사용해야 하는 것 같은데

너무 복잡하고 단순한 문제를 풀기 위해 너무 복잡하게 알아야 하는 부분 같아서 패스..

나중에 다시 해보고자 한다면

https://stackoverflow.com/questions/55182567/how-to-read-and-write-bits-in-a-chunk-of-memory-in-swift 

https://developer.apple.com/documentation/swift/unsafemutablerawpointer/

두 페이지를 참고해서 해보는 게 어떨까 함

 

2741 N찍기

let num = Int(readLine()!)!
for i in 1...num {
    print(i)
}

 

 

2742 기찍 N

let num = Int(readLine()!)!
for i in (1...num).reversed() {
    print(i)
}

for문 범위 뒤에 .reversed() 사용만 해주면 뒤에서부터 된다

 

 

 

11021 A+B-7

let caseNum = Int(readLine()!)!
for i in 1...caseNum {
	let num = readLine()!.split(separator : " ")
	let input = num.map{Int($0)!}
	let result = input[0] + input[1]
	print("Case #\(i): \(result)")
}

틀렸다고 나와서 당황했는데

알고보니 case라고 소문자로 써서 틀렸던 문제

 

 

11022 A+B-8

let caseNum = Int(readLine()!)!
for i in 1...caseNum {
	let input = readLine()!.split(separator: " ")
	let num = input.map{Int($0)!}
	print("Case #\(i): \(num[0]) + \(num[1]) = \(num[0]+num[1])")
}

똑같은데 출력에만 많이 입력해야 하는 문제는 너무 귀찮다

 

 

2438 별찍기 -1

let caseNum = Int(readLine()!)!
var a:[String]=[]
for _ in 1...caseNum {
    a.append("*")
    let result = a.joined(separator: "")
    print(result)
}

배열을 string으로 바꿔서 풀었다.

https://dmsitter.tistory.com/136

관련내용 정리