๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“– Problem Solution/Programmers

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์›”๊ฐ„ ์ฝ”๋“œ ์ฑŒ๋ฆฐ์ง€ ์‹œ์ฆŒ1 ์ด์ง„ ๋ณ€ํ™˜ Swift

by Fomagran ๐Ÿ’ป 2020. 11. 15.
728x90
๋ฐ˜์‘ํ˜•

Problem


 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ์ด์ง„ ๋ณ€ํ™˜ ๋ฐ˜๋ณตํ•˜๊ธฐ

 

programmers.co.kr

Solution


์ด์ง„๋ณ€ํ™˜ํ•œ ์ˆ˜๋ฅผ ์ €์žฅํ•  ๋ณ€์ˆ˜ -> var radix = s

0์˜ ๊ฐฏ์ˆ˜๋ฅผ ์ €์žฅํ•  ๋ณ€์ˆ˜ - > var zeroCount = 0

ํšŒ์ฐจ๋ฅผ ์ €์žฅํ•  ๋ณ€์ˆ˜ -> var turn = 0

 

while๋ฌธ์„ ์ด์šฉํ•ด ์ด์ง„๋ณ€ํ™˜ํ•œ ์ˆ˜(radix)๊ฐ€ 1์ด ๋ ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณตํ•ด์ค๋‹ˆ๋‹ค. ->  while radix != "1" {

 

0์„ ์ œ๊ฑฐํ•œ ์ˆ˜๋Š” ๊ณง ์ „์ฒด๋ฌธ์ž์—์„œ 1๋งŒ ํ•„ํ„ฐ๋งํ•œ ๊ธ€์ž์ด๋ฏ€๋กœ filter๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด 1๋งŒ ๊ฑธ๋Ÿฌ์ค๋‹ˆ๋‹ค.

-> let one = radix.filter{ $0 == "1"}

 

์ „์ฒด๋ฌธ์ž์˜ ๊ธธ์ด์—์„œ 1์˜ ๊ฐฏ์ˆ˜๋งŒํผ ๋บ€ ๊ฒƒ์ด 0์˜ ๊ฐฏ์ˆ˜์ด๋ฏ€๋กœ ๋บ€ ์ˆซ์ž๋ฅผ zeroCount์— ๋”ํ•ด์ค๋‹ˆ๋‹ค.

 

1์˜ ๊ฐฏ์ˆ˜๋ฅผ ์ด์ง„๋ณ€ํ™˜ํ•ด์ค๋‹ˆ๋‹ค. - >  radix = String(one.count,radix:2)

 

๊ทธ๋ฆฌ๊ณ  ํšŒ์ฐจ๋ฅผ ๋Š˜๋ ค์ค๋‹ˆ๋‹ค, - > turn += 1

 

๋งˆ์ง€๋ง‰์œผ๋กœ 1์ด ๋˜์—ˆ๋‹ค๋ฉด ํšŒ์ฐจ์™€ 0์˜ ๊ฐฏ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•ด์ค๋‹ˆ๋‹ค. -> return [turn,zeroCount]

 

Source Code


728x90
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€