[๋ฌธ์ ๋งํฌ] ๐
ํ๋ก๊ทธ๋๋จธ์ค
SW๊ฐ๋ฐ์๋ฅผ ์ํ ํ๊ฐ, ๊ต์ก, ์ฑ์ฉ๊น์ง Total Solution์ ์ ๊ณตํ๋ ๊ฐ๋ฐ์ ์ฑ์ฅ์ ์ํ ๋ฒ ์ด์ค์บ ํ
programmers.co.kr
ํ์ด ๋ฐฉ๋ฒ
2์ง๋ฒ ๋ณํ ๋ฐฉ๋ฒ
1๏ธโฃ format ํจ์ ์ด์ฉ
n = 5
binary_str = format(n, 'b') # ๊ฒฐ๊ณผ: '101'
2๏ธโฃ bin() ํจ์ ์ฌ์ฉ
n = 5
binary_str = bin(n) # ๊ฒฐ๊ณผ: '0b101'
3๏ธโฃ f-string์ ์ฌ์ฉํ ํฌ๋งทํ
n = 5
binary_str = f"{n:b}" # ๊ฒฐ๊ณผ: '101'
Solution
def solution(s):
zero, num, cnt = 0, 0, 0 # 0์ ๊ฐ์, 2์ง๋ฒ ๊ธธ์ด, ๋ณํ ํ์
while True:
cnt += 1 # ๋ณํ ํ์ ์ฆ๊ฐ
for i in s:
if i == '1': # 1 ์ด๋ฉด ๊ธธ์ด ์นด์ดํธ
num += 1
else: # 0 ์ด๋ฉด 0 ๊ฐ์ ์นด์ดํธ
zero += 1
if num == 1: # 1์ด ๋ ๋ ์ข
๋ฃ
break
else:
s = format(num, 'b') # 2์ง์๋ก ๋ณํํด์ ๋ค์ ๋ด๊ธฐ
num = 0 # ์ด๊ธฐํ
return [cnt, zero]
๊ฐ์ ํ ์
์ด ์ฝ๋์์ ๋ถํ์ํ๊ฒ ๋ณ์ num์ ์ด๊ธฐํํ๊ณ ๋ค์ for ๋ฃจํ์์ 1์ ๊ฐ์๋ฅผ ๊ณ์ฐํ๊ณ ์๋๋ฐ, Python์ count ๋ฉ์๋๋ฅผ ์ด์ฉํด 0๊ณผ 1์ ๊ฐ์๋ฅผ ๋ ํจ์จ์ ์ผ๋ก ์ธ๋ฉด ์ฑ๋ฅ์ด ๊ฐ์ ๋๋ค. ๋, ์กฐ๊ฑด์ num == 1๋ก ์ฒดํฌํ๋ ๋์ ๋ฌธ์์ด ๊ธธ์ด๊ฐ 1์ธ์ง ์ฒดํฌํ๋ ๊ฒ๋ ๋ช ํํ๋ค. ๋ค์๊ณผ ๊ฐ์ด ๊ฐ์ ํ ์ ์๋ค.
๊ฐ์ ๋ ์ฝ๋
def solution(s):
zero, cnt = 0, 0 # 0์ ๊ฐ์, ๋ณํ ํ์
while s != '1':
cnt += 1
zero += s.count('0') # 0์ ๊ฐ์ ์ถ๊ฐ
s = bin(len(s.replace('0', '')))[2:] # 0์ ์ ๊ฑฐํ ๊ธธ์ด๋ฅผ ์ด์ง์๋ก ๋ณํ
return [cnt, zero]
๐ฉ๐ป ํ๊ณ
2์ง๋ฒ์ผ๋ก ๋ณํํ๋ ๋ฐฉ๋ฒ๋ง ์๋ฉด ์ฝ๊ฒ ํ ์ ์์ ๋ฌธ์ ์๋ค. ๋ค๋ง ์ฑ๋ฅ์ด ํจ์จ์ ์ด์ง ๋ชปํ ์ฝ๋๋ฅผ ์์ฑํ ์ ์ด ์์ฝ๋ค. ์์ ๊ตฌํ๋ ์ข์ง๋ง ๋ด์ฅ ํจ์๋ฅผ ์ ๊ทน ํ์ฉํ๋๋ก ํ์.
remove() ์ฌ์ฉ ์ ์ฃผ์์ฌํญ
- s = "110010101001" -> s.remove("0") ์ฌ์ฉ ๋ถ๊ฐ
- AttributeError: 'str' object has no attribute 'remove'
- answer.remove('0') -> ์ค๋ณต๋ ์์๊ฐ ์์ด๋ ํ๋๋ง ์ ๊ฑฐ๋จ
'๐งฉ Algorithm > [Programmers] Level 2' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [Programmers] L2. ์ง์ง์ด ์ ๊ฑฐํ๊ธฐ (Python) (0) | 2024.11.11 |
|---|---|
| [Programmers] L2. ํผ๋ณด๋์น ์ (Python) (0) | 2024.11.10 |
| [Programmers] L2. JadenCase ๋ฌธ์์ด ๋ง๋ค๊ธฐ (Python) (0) | 2024.11.08 |
| [Programmers] L2. ์ต์๊ฐ ๋ง๋ค๊ธฐ (Python) (0) | 2024.11.08 |
| [Programmers] L2. ์ฌ๋ฐ๋ฅธ ๊ดํธ (์คํ/ํ/Python) (1) | 2024.11.08 |