๋ฌธ์ ์ค๋ช
์์ ์ ์ x์ ๋ํ ํจ์ f(x)๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ์ ์ํฉ๋๋ค.
- x๋ณด๋ค ํฌ๊ณ x์ ๋นํธ๊ฐ 1~2๊ฐ ๋ค๋ฅธ ์๋ค ์ค์์ ์ ์ผ ์์ ์
์๋ฅผ ๋ค์ด,
- f(2) = 3 ์ ๋๋ค. ๋ค์ ํ์ ๊ฐ์ด 2๋ณด๋ค ํฐ ์๋ค ์ค์์ ๋นํธ๊ฐ ๋ค๋ฅธ ์ง์ ์ด 2๊ฐ ์ดํ์ด๋ฉด์ ์ ์ผ ์์ ์๊ฐ 3์ด๊ธฐ ๋๋ฌธ์ ๋๋ค.
- f(7) = 11 ์ ๋๋ค. ๋ค์ ํ์ ๊ฐ์ด 7๋ณด๋ค ํฐ ์๋ค ์ค์์ ๋นํธ๊ฐ ๋ค๋ฅธ ์ง์ ์ด 2๊ฐ ์ดํ์ด๋ฉด์ ์ ์ผ ์์ ์๊ฐ 11์ด๊ธฐ ๋๋ฌธ์ ๋๋ค.
์ ์๋ค์ด ๋ด๊ธด ๋ฐฐ์ด numbers๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง๋๋ค. numbers์ ๋ชจ๋ ์๋ค์ ๋ํ์ฌ ๊ฐ ์์ f ๊ฐ์ ๋ฐฐ์ด์ ์ฐจ๋ก๋๋ก ๋ด์ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์ ํ์ฌํญ
- 1 ≤ numbers์ ๊ธธ์ด ≤ 100,000
- 0 ≤ numbers์ ๋ชจ๋ ์ ≤ 1015
์ ์ถ๋ ฅ ์
์ ์ถ๋ ฅ ์ #1
- ๋ฌธ์ ์์์ ๊ฐ์ต๋๋ค.
ํ์ด ์ฝ๋
def solution(numbers):
answer = []
for num in numbers:
temp = bin(num)[2:]
if temp[-1] == '0':
answer.append(num+1)
else:
idx = 0
for i in range(len(temp)-1, -1, -1):
if temp[i] != '1':
idx = i
break
if idx == 0:
temp = '10' + temp[1:]
answer.append(int(temp, 2))
else:
temp = temp[:idx] + '10' + temp[idx+2:]
answer.append(int(temp, 2))
return answer
์ฐ์ , ๋ธ๋ฃจํธํฌ์ค ๋ฐฉ์์ ์ฌ์ฉํ ์ ์๋ค.
์ฃผ์ด์ง๋ ์ซ์๋ 100,000๊ฐ์ด๋ฉฐ, ํ์ฌ ์ซ์๋ก๋ถํฐ 1์ฉ ์ฌ๋ ค๊ฐ๋ฉฐ ์กฐ๊ฑด์ ๋ง๋์ง ํ์ธํ๊ธฐ์๋
numbers์ ๋์ฌ ์ ์๋ ์๋ 10์ 15์น๊น์ง์ด๊ธฐ ๋๋ฌธ์ ์ต์ ์ ๊ฒฝ์ฐ์๋ ์๊ฐ๋ณต์ก๋๋ฉด์์ ์๊ฐ์ด๊ณผ๋ฅผ ๋ฒ์ด๋ ์ ์๋ค.
์ด๋ด๋๋ ํจํด์ ์ฐพ์๋ด์ผ ํ๋ค. ์ธ ๊ฐ์ง ์์๋ฅผ ๋ณด์.
1) 1011 - 1100 - 1101
2) 10111 - 11000 - 11001 - 11010 - 11011
3) (0)11 - 100 - 101
์ฒซ ๋ฒ์งธ์ ๋ ๋ฒ์งธ๋ 0์ด ์ค๋ฅธ์ชฝ ๋ ์๋ฆฌ๊ฐ ์๋, ์ค๊ฐ์ ์์นํ ๊ฒฝ์ฐ์ด๋ค.
์กฐ๊ฑด์ ๋ง๋ ์๋ฅผ ์ฐพ์๋ณด๋ฉด, ์ฒซ ๋ฒ์งธ๋ 1011 - 1101, ๋ ๋ฒ์งธ๋ 10111 - 11011์ด๋ค.
์ ๋ณด๋ฉด, 0์ด ํ ์นธ ์ค๋ฅธ์ชฝ์ผ๋ก ์ด๋ํ ๊ฒ์ ์ ์ ์๋ค.
์ธ ๋ฒ์งธ์ ๊ฒฝ์ฐ, ์ฃผ์ด์ง ์ซ์๋ฅผ ์ด์ง์๋ก ๋ณํํ์ ๋ ๋ชจ๋ 1๋ก ์ฐจ ์๋ ๊ฒฝ์ฐ๋ค.
์ด ๊ฒฝ์ฐ๋, ์์ 0๋นํธ๋ฅผ ๋ฃ๊ณ , 0์ ํ ์นธ ์ค๋ฅธ์ชฝ์ผ๋ก ์ด๋์ํค๋ฉด ๋๋ค.
์์์ ๋์ค์ง ์์์ง๋ง, ๊ฐ์ฅ ์ค๋ฅธ์ชฝ ๋นํธ๊ฐ 0์ด๋ผ๋ฉด ๊ทธ๋ฅ 1์ ๋ํ๋ฉด ๋๋ค.
์ด ๋ ผ๋ฆฌ์ ๋ง๊ฒ ์ฝ๋ฉ์ ํ๋ฉด ๋๋ค.
python์ bin ํจ์๋ฅผ ์ฌ์ฉํ๋ฉด, ์ฝ๊ฒ 10์ง์๋ฅผ 2์ง์๋ก ๋ณ๊ฒฝํ ์ ์๋ค.
๋ฆฌํด ๊ฐ์ ๋ฌธ์์ด๋ก, '0bxxxxx' ๊ผด๋ก ๋์ค๊ธฐ ๋๋ฌธ์, ์์ 0b๋ฅผ ์ญ์ ํ๊ธฐ ์ํด ์ฌ๋ผ์ด์ฑ์ผ๋ก [2:] ๋ถํฐ ์ฌ์ฉํ๋ค.
์ค๋ฅธ์ชฝ๋ถํฐ ์ผ์ชฝ์ผ๋ก ๋นํธ๋ฅผ ํ์ธํ๋ฉฐ, '1'์ด ์๋ ๋นํธ๊ฐ ์๋์ง ํ์ธํ๋ค.
'1'์ด ์๋ ๋นํธ, ์ฆ '0'์ธ ๋นํธ๊ฐ ์กด์ฌํ๋ฉด '0'๋นํธ ์ผ์ชฝ์ ๋ชจ๋ ์ด๋ฆฌ๊ณ , '10'์ผ๋ก 0๊ณผ 1์ ์์น๋ฅผ ๋ฐ๊พธ๊ณ , ๋ ์นธ์ ๊ฑด๋๋ฐ๊ณ ์ค๋ฅธ์ชฝ ๋ถ๋ถ์ ์ด๋ฆฐ๋ค.
'0'์ธ ๋นํธ๊ฐ ์กด์ฌํ์ง ์์ผ๋ฉด, ๊ฐ์ฅ ์์ด '10'์ผ๋ก ๋ฐ๋๊ณ , ๋๋จธ์ง ๋ถ๋ถ์ ์ด๋ฆฐ๋ค.
์ต์ข answer์ ๋ฃ์ ๋๋, 2์ง์๋ฅผ 10์ง์๋ก ๋ณํํด์ผ ํ๊ธฐ ๋๋ฌธ์ int ํจ์๋ฅผ ์ฌ์ฉํ๋ค.
int์ parameter์ค์๋, ์ง์๋ฅผ ๋ฃ์ ์ ์๋ค. int(๋ฌธ์์ด, ๋ฌธ์์ด์ด ํํํ๊ณ ์๋ ์ง์)๋ฅผ ๋ฃ์ด์ฃผ๋ฉด N์ง์๋ฅผ 10์ง์๋ก ๋ณํํ ์ ์๋ค.
'๐ ์ฝ๋ฉํ ์คํธ ๋๋น : PS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค] ๊ฐ์ฅ ํฐ ์ (level2, python) (1) | 2022.09.19 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค] 2xn ํ์ผ๋ง (level2, python) (0) | 2022.09.19 |
[ํ๋ก๊ทธ๋๋จธ์ค] ๋ค๋ฆฌ๋ฅผ ์ง๋๋ ํธ๋ญ (level2, python) (0) | 2022.09.19 |
[ํ๋ก๊ทธ๋๋จธ์ค] ๊ฒ์ ๋งต ์ต๋จ๊ฑฐ๋ฆฌ (level2, python) (1) | 2022.09.13 |
[ํ๋ก๊ทธ๋๋จธ์ค] ๋ชจ์์ฌ์ (level2, python) (1) | 2022.09.13 |