본문 바로가기
알고리즘

[Swift] 백준 3460번 이진수

by 고고 2022. 3. 18.

링크: https://www.acmicpc.net/problem/3460

 

3460번: 이진수

양의 정수 n이 주어졌을 때, 이를 이진수로 나타냈을 때 1의 위치를 모두 찾는 프로그램을 작성하시오. 최하위 비트(least significant bit, lsb)의 위치는 0이다.

www.acmicpc.net

 

 

'각 테스트 케이스에 대해서, 1의 위치를 공백으로 구분해서 줄 하나에 출력한다. 위치가 낮은 것부터 출력한다.'

 

테스트케이스 수만큼 array에 입력값을 저장합니다.

String인 a를 배열로 만들고, 위치가 낮은 것부터 출력하기 위해 reversed()를 합니다.

enumrated()를 하면 (인덱스, 값) 형태로 바뀝니다. 만약 값이 1이면 인덱스를 출력하도록 하였습니다.

import Foundation

let T = Int(readLine()!)!
var array = [Int]()

for _ in 0..<T {
    array.append(Int(readLine()!)!)
}

for a in array {
    Array(String(a, radix: 2)).reversed().enumerated().forEach {
        if $0.element == "1" {
            print($0.offset, terminator: " ")
        }
    }
}

댓글