Archive/Questions

[programmers/Swift] 이진 변환 반복하기

Marco 2022. 8. 6. 09:55
728x90

programmers.co.kr - 코딩테스트연습 - Lv.2 - 월간 코드 챌린지 시즌 1 - 이진 변환 반복하기

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

Constraints :

  • s의 길이는 1 이상 150,000 이하입니다.
  • s에는 '1'이 최소 하나 이상 포함되어 있습니다.

 

Solution.swift :

//
//  Created by Yongwoo Marco on 2022/08/04.
//  Copyright © 2022 Yongwoo Marco Kim. All rights reserved.
//

func solution(_ s:String) -> [Int] {
	var str = s, zeros = 0, round = 0
	
	while str != "1" {
		let removed = str.filter { $0 == "1" }.map { String($0) }.joined()
		zeros += str.count - removed.count
		round += 1
		str = String(removed.count, radix: 2)
	}
	
	return [round, zeros]
}

print(solution("110010101001")) // [3, 8]
print(solution("01110")) // [3, 3]
print(solution("1111111")) // [4, 1]

How I tried this :
변수를 좀 줄이면 좋을것 같긴한데, 직관적으로 풀었다

특별한 고민없이 풀 수 있었다.

문제에 관한 모든 저작권 : https://programmers.co.kr/

728x90