[goorm-이진수만들기]swift 배열크기 고정, 줄바꿈없이 출력

syeony·2024년 7월 1일
0

swift

목록 보기
4/10

틀잡기

먼저 int형으로 입력을 받는다
1차원 배열에 for문을 활용하여 2씩 곱한걸 순서대로 넣어준다
arr = [1, 2, 4, 8, 16, 32, ...]
for문으로 배열의 뒤에서부터 돌면서 입력받은 숫자보다 작을때, if문 처리하면서 조건에 맞춰 0과 1을 출력해준다.

문법

1. 배열크기 고정

Error 132
Fatal error: Index out of range

처음에 이런 에러가 뜨길래 뭐가 문제지 한참 삽질했다.
알고보니 배열 문제였다.
배열의 크기를 고정해주지 않고 처음에 var arr: [Int] = [] 로 사용하였더니 에러가 난 것 이었다.

var arr = [Int](repeating: 0, count: 28)

크기 고정은 이렇게 한다고 한다.

2. 줄바꿈없이 출력

for문으로 print할때 그냥 하면 줄바꿈으로 출력된다.
줄바꿈없이 출력하려면!

print("1",terminator: "")

정답 코드

import Foundation

let input = Int(readLine()!)!

var arr = [Int](repeating: 0, count: 28)
arr[0] = 1
var two: Int = 1
var sum: Int = 0

for i in 1..<28{
	two = two * 2
	arr[i] = two
}

for i in (0...27).reversed(){
	if input >= arr[i]{
		if input-sum >= arr[i] {
			print("1",terminator: "")
			sum = sum + arr[i]
		}
		else if input-sum < arr[i] {
			print("0",terminator: "")
		}
	}
}
profile
모바일 어플리케이션, cross platform과 iOS에 관심이 많은 개발자 오승연입니다

0개의 댓글