[ Code Kata ] ๐คฏ python #16 ์์๋ฅผ ์ด์ง๋ฒ์ผ๋ก ๋ฐ๊พผ ๋ค ๊ฐ์ฅ ํฐ 0์ ์ฐ์์ ๋ฆฌํดํ๊ธฐ / ์ซ์๊ด๋ จ ๋ด์ฅํจ์ / strip( )
๋ฌธ์
์์ N์ ์ด์ง๋ฒ์ผ๋ก ๋ฐ๊ฟจ์ ๋, ์ฐ์์ผ๋ก ์ด์ด์ง๋ 0 ์ค์์ ๊ฐ์ฅ ํฐ ๊ฐ์ returnํด ์ฃผ์ธ์.
- ์ด์ด์ง๋ 0์ 1๊ณผ 1์ฌ์ด์ ์๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
์ด๋ฐ ๊ฒ์ binary gap ์ด๋ผ๊ณ ํฉ๋๋ค.
์๋ฅผ ๋ค์ด,
input: 9
output: 2
์ค๋ช
: 9์ ์ด์ง์๋ 1001 ์
๋๋ค.
1๊ณผ 1์ฌ์ด์ ์๋ 0์ 2 ์ด๋ฏ๋ก, 2๋ฅผ return
-
input: 9
output: 2
์ค๋ช
: 9์ ์ด์ง์๋ 1001 ์
๋๋ค.
1๊ณผ 1์ฌ์ด์ ์๋ 0์ 2 ์ด๋ฏ๋ก, 2๋ฅผ return
-
input: 529
output: 4
์ค๋ช
: 529์ ์ด์ง์๋ 1000010001 ์
๋๋ค.
1๊ณผ 1์ฌ์ด์ ์๋ ์ฐ์๋ 0์ ์๋ 4์ 3์
๋๋ค.
์ด ์ค ํฐ ๊ฐ์ 4์ด๋ฏ๋ก 4๋ฅผ return
-
input: 529
output: 4
์ค๋ช
: 529์ ์ด์ง์๋ 1000010001 ์
๋๋ค.
1๊ณผ 1์ฌ์ด์ ์๋ ์ฐ์๋ 0์ ์๋ 4์ 3์
๋๋ค.
์ด ์ค ํฐ ๊ฐ์ 4์ด๋ฏ๋ก 4๋ฅผ return
-
input: 20
output: 1
์ค๋ช
: 20์ ์ด์ง์๋ 10100 ์
๋๋ค.
1๊ณผ 1์ฌ์ด์ ์๋ ์ฐ์๋ 0์ ์๋ 1 ๋ฟ์
๋๋ค.
(๋ค์ ์๋ 0์ 1์ฌ์ด์ ์๋ ๊ฒ์ด ์๋๋ฏ๋ก)
-
input: 20
output: 1
์ค๋ช
: 20์ ์ด์ง์๋ 10100 ์
๋๋ค.
1๊ณผ 1์ฌ์ด์ ์๋ ์ฐ์๋ 0์ ์๋ 1 ๋ฟ์
๋๋ค.
(๋ค์ ์๋ 0์ 1์ฌ์ด์ ์๋ ๊ฒ์ด ์๋๋ฏ๋ก)
-
input: 15
output: 0
์ค๋ช
: 15์ ์ด์ง์๋ 1111 ์
๋๋ค.
1๊ณผ 1์ฌ์ด์ ์๋ 0์ด ์์ผ๋ฏ๋ก 0์ return
-
input: 15
output: 0
์ค๋ช
: 15์ ์ด์ง์๋ 1111 ์
๋๋ค.
1๊ณผ 1์ฌ์ด์ ์๋ 0์ด ์์ผ๋ฏ๋ก 0์ return
-
input: 32
output: 0
์ค๋ช
: 32์ ์ด์ง์๋ 100000 ์
๋๋ค.
1๊ณผ 1์ฌ์ด์ ์๋ 0์ด ์์ผ๋ฏ๋ก 0์ return
-
input: 32
output: 0
์ค๋ช
: 32์ ์ด์ง์๋ 100000 ์
๋๋ค.
1๊ณผ 1์ฌ์ด์ ์๋ 0์ด ์์ผ๋ฏ๋ก 0์ return
-------------------------------------
nums: ์ซ์ ๋ฐฐ์ด
target: ๋ ์๋ฅผ ๋ํด์ ๋์ฌ ์ ์๋ ํฉ๊ณ
return: ๋ ์์ index๋ฅผ ๊ฐ์ง ์ซ์ ๋ฐฐ์ด
์ค๋๋ ์ญ์๋ ์๋ก์ด ์ ๊ฐ์ ์ฝ๋ ์นดํ!
์ ํ ๊ฐ์ด ์ค์ง๋ฅผ ์์์ + ๋ด๊ฐ ์ฝํ ์ํ ๊ฐ๋
์ ์ดํดํด์ผํด์
์ฐ์ ์ด ๋ธ๋ก๊ทธ๋ฅผ ์ฐธ๊ณ ํ๋ฉฐ bin()
๋ด์ฅํจ์๋ฅผ ์ฌ์ฉํด๋ณด๋ ค๊ณ ํ๋๋ฐ ๐๐ป 2์ง์, 8์ง์, 10์ง์, 16์ง์ ๋ณํํ๊ธฐ
์์ N์ ์ด์ง๋ฒ์ผ๋ก ๋ฐ๊ฟจ์ ๋, ์ฐ์์ผ๋ก ์ด์ด์ง๋ 0 ์ค์์ ๊ฐ์ฅ ํฐ ๊ฐ์ returnํด ์ฃผ์ธ์.
- ์ด์ด์ง๋ 0์ 1๊ณผ 1์ฌ์ด์ ์๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
์ด๋ฐ ๊ฒ์ binary gap ์ด๋ผ๊ณ ํฉ๋๋ค.
์๋ฅผ ๋ค์ด,
input: 9
output: 2
์ค๋ช
: 9์ ์ด์ง์๋ 1001 ์
๋๋ค.
1๊ณผ 1์ฌ์ด์ ์๋ 0์ 2 ์ด๋ฏ๋ก, 2๋ฅผ return
-
input: 9
output: 2
์ค๋ช
: 9์ ์ด์ง์๋ 1001 ์
๋๋ค.
1๊ณผ 1์ฌ์ด์ ์๋ 0์ 2 ์ด๋ฏ๋ก, 2๋ฅผ return
-
input: 529
output: 4
์ค๋ช
: 529์ ์ด์ง์๋ 1000010001 ์
๋๋ค.
1๊ณผ 1์ฌ์ด์ ์๋ ์ฐ์๋ 0์ ์๋ 4์ 3์
๋๋ค.
์ด ์ค ํฐ ๊ฐ์ 4์ด๋ฏ๋ก 4๋ฅผ return
-
input: 529
output: 4
์ค๋ช
: 529์ ์ด์ง์๋ 1000010001 ์
๋๋ค.
1๊ณผ 1์ฌ์ด์ ์๋ ์ฐ์๋ 0์ ์๋ 4์ 3์
๋๋ค.
์ด ์ค ํฐ ๊ฐ์ 4์ด๋ฏ๋ก 4๋ฅผ return
-
input: 20
output: 1
์ค๋ช
: 20์ ์ด์ง์๋ 10100 ์
๋๋ค.
1๊ณผ 1์ฌ์ด์ ์๋ ์ฐ์๋ 0์ ์๋ 1 ๋ฟ์
๋๋ค.
(๋ค์ ์๋ 0์ 1์ฌ์ด์ ์๋ ๊ฒ์ด ์๋๋ฏ๋ก)
-
input: 20
output: 1
์ค๋ช
: 20์ ์ด์ง์๋ 10100 ์
๋๋ค.
1๊ณผ 1์ฌ์ด์ ์๋ ์ฐ์๋ 0์ ์๋ 1 ๋ฟ์
๋๋ค.
(๋ค์ ์๋ 0์ 1์ฌ์ด์ ์๋ ๊ฒ์ด ์๋๋ฏ๋ก)
-
input: 15
output: 0
์ค๋ช
: 15์ ์ด์ง์๋ 1111 ์
๋๋ค.
1๊ณผ 1์ฌ์ด์ ์๋ 0์ด ์์ผ๋ฏ๋ก 0์ return
-
input: 15
output: 0
์ค๋ช
: 15์ ์ด์ง์๋ 1111 ์
๋๋ค.
1๊ณผ 1์ฌ์ด์ ์๋ 0์ด ์์ผ๋ฏ๋ก 0์ return
-
input: 32
output: 0
์ค๋ช
: 32์ ์ด์ง์๋ 100000 ์
๋๋ค.
1๊ณผ 1์ฌ์ด์ ์๋ 0์ด ์์ผ๋ฏ๋ก 0์ return
-
input: 32
output: 0
์ค๋ช
: 32์ ์ด์ง์๋ 100000 ์
๋๋ค.
1๊ณผ 1์ฌ์ด์ ์๋ 0์ด ์์ผ๋ฏ๋ก 0์ return
-------------------------------------
nums: ์ซ์ ๋ฐฐ์ด
target: ๋ ์๋ฅผ ๋ํด์ ๋์ฌ ์ ์๋ ํฉ๊ณ
return: ๋ ์์ index๋ฅผ ๊ฐ์ง ์ซ์ ๋ฐฐ์ด
์ค๋๋ ์ญ์๋ ์๋ก์ด ์ ๊ฐ์ ์ฝ๋ ์นดํ!
์ ํ ๊ฐ์ด ์ค์ง๋ฅผ ์์์ + ๋ด๊ฐ ์ฝํ ์ํ ๊ฐ๋
์ ์ดํดํด์ผํด์
์ฐ์ ์ด ๋ธ๋ก๊ทธ๋ฅผ ์ฐธ๊ณ ํ๋ฉฐ bin()
๋ด์ฅํจ์๋ฅผ ์ฌ์ฉํด๋ณด๋ ค๊ณ ํ๋๋ฐ ๐๐ป 2์ง์, 8์ง์, 10์ง์, 16์ง์ ๋ณํํ๊ธฐ
์ค๋์ ์ฝ๋์นดํ๋ '๋ชจ์ฌ์ํจ๊ป์ฝ๋ฉ'์ด์๋ ๋ฐ๋์ ๋ฌธ์ ๋ฅผ ํ์ด๋ณผ ์ ์์๋ค ํํํํณ
(repl.it๋ฌธ์ ์๋๊ฑด์ง.. ๋ค๊ฐ์ด ๋์์ ๊ฐ์ ํ๋ฉด์ ๋๊ณ ๋ฌธ์ ๋ฅผ ํธ๋ ์ํฉ..
์ด๊ฑธ ๋ชจ๋ฅด๊ณ ๋ค๋ฅธ ์ฌ๋์ด ํผ ์ฝ๋๋ฅผ ์น ์ง์๋ฒ๋ฆฐ ๋์๊ธฐ... )
๊ทธ๋์ ๋๊ฐ ์๊ฐ๋ง ํด๋๊ณ model solution ๋ณด๋ฌ ๊ฐ๋ค... ํํณ...
model solution
def solution(N):
binaryNumber = format(N, 'b')
maximum = 0
binaryNumberList = binaryNumber.strip('0').split('1')
for x in binaryNumberList:
if not x:
continue
if len(x) > maximum:
maximum = len(x)
return maximum
print(solution(3243))
def solution(N):
binaryNumber = format(N, 'b')
maximum = 0
binaryNumberList = binaryNumber.strip('0').split('1')
for x in binaryNumberList:
if not x:
continue
if len(x) > maximum:
maximum = len(x)
return maximum
print(solution(3243))
์ญ์๋ ์์ํ๋๋๋ก ์
๋ ฅ๋ฐ์ ์ซ์๋ฅผ ๋ด์ฅํจ์๋ฅผ ์ฌ์ฉํด์ ์งํํ๋ ๊ฒ!!
but ๋ด๊ฐ ์์ํ๋ bin( )
ํจ์๊ฐ ์๋, format( )
ํจ์๋ฅผ ์ฌ์ฉํด์ ํ์ด๋๋ค.
์ค๋๋ ์ญ์๋ ๋ด์ฅํจ์๋ฅผ ๋ชฐ๋๋ ๋๋ฅผ ์ํ ์ ๋ฆฌ์ ์๊ฐ! ๊ผฌ-
์ซ์ ๊ด๋ จ ๋ด์ฅํจ์
ํ์ด์ฌ์ ๊ธฐ๋ณธ 10์ง์์ด๊ธฐ ๋๋ฌธ์, ๋ค๋ฅธ ์ง์๋ ์ ๋์ด๊ฐ ๋ถ๋๋ค๊ณ ํ๋ค.
- 2์ง์ : 0b
- 8์ง์ : 0o
- 16์ง์ : 0x
10์ง์์์ 2, 8, 16์ง์ ๋ณํํ๊ธฐ ๊ณผ์ ์์ ์ฐ์ผ ์ ์๋ ์ซ์ ๊ด๋ จ ๋ด์ฅํจ์๋ค ์ ๋ฆฌํ๊ธฐ!
1) bin(), oct(), hex()
bin()
,oct()
,hex()
๋ด์ฅํจ์๋ฅผ ์ฌ์ฉํ๋ค
value = 60
b = bin(value)
o = oct(value)
h = hex(value)
print(b) --> # 0b111100
print(o) --> # 0o74
print(h) --> # 0x3c
๊ฒฐ๊ณผ๋ ๋ชจ๋ ๋ฌธ์์ด ํ์ ์ผ๋ก ๋ฐํ๋๋ค๊ณ ํ๋ค.
2) format()
value = 60
b = format(value, '#b')
o = format(value, '#o')
h = format(value, '#h')
print(b) --> # 0b111100
print(o) --> # 0o74
print(h) --> # 0x3c
์ด๋ ๊ฒ ์ถ๋ ฅํ๋ฉด 1๋ฒ์ ๊ฒฝ์ฐ์ ๋๊ฐ์ด ๋ฌธ์์ด๋ก ์ถ๋ ฅ์ด ๋๊ณ ,
value = 60
b = format(value, 'b')
o = format(value, 'o')
h = format(value, 'h')
print(b) --> # 111100
print(o) --> # 74
print(h) --> # 3c
๋๋ฒ์งธ ์ธ์์์ #์ ์ ๊ฑฐํ๋ฉด ์ ๋์ด๊ฐ ๋น ์ง ๊ฒฐ๊ณผ๊ฐ ์ถ๋ ฅ๋๋ค. (๋ณํ๋ ๊ฐ ๊ทธ ์์ฒด๋ง ํ์ํ ๊ฒฝ์ฐ ์ฌ์ฉ)
3-1) ๋ค๋ฅธ ์ง์ ํํ์์ 10์ง์๋ก ๋ณํ
2, 8, 16์ง์์์ 10์ง์๋ก ๋ณํํ๋ ๋ฐฉ๋ฒ!
๋ณํํ๊ณ ์ ํ๋ ์ง์์ ํ์
์ ๋ฌธ์์ด์ด๋ฉฐ, ๋ฐํ๋๋ 10์ง์๋ ์ ์ํ์
์ผ๋ก ๋ฆฌํด๋๋ค.
b = int('0b111100' , 2)
o = int('0o74' , 8)
h = int('0x3c' , 16)
print(b) --> # 60
print(o) --> # 60
print(h) --> # 60
int()
ํจ์์ ์ฒซ๋ฒ์งธ ์ธ์๋ ๋ณํํ๊ณ ์ ํ๋ ์ง์, ๋๋ฒ์งธ ์ธ์๋ ์ฒซ๋ฒ์งธ ์ธ์์ ์ง์ ํํ!
(๋๋ฒ์งธ ์ธ์์ ๋ค์ด๊ฐ ์ง์ ํํ๋ฅผ ์๋ชป ์
๋ ฅํ๋ฉด ์๋ฌ๊ฐ ๋ฐ์ํ๋ค)
3-2) ๋ค๋ฅธ ์ง์ ํํ์์ ๋ค๋ฅธ ์ง์๋ก ๋ณํ
2์ง์์์ 8์ง์๋ก ๋ณํํ๋ ๊ฒ๊ณผ ๊ฐ์ด ๋ณํํ๋ ๋ฐฉ๋ฒ.
๋ณํํ๊ณ ์ ํ๋ ์ง์์ ํ์
์ ์ ์์ด๋ฉฐ, ๋ฐํ๋๋ ํ์
์ ๋ฌธ์์ด์ด๋ค. (3-1์ ๊ฒฝ์ฐ์ ๋ฐ๋!)
o = oct(0b111100)
h = hex(0b111100)
s = str(0b111100)
print(o) --> # 0o74
print(h) --> # 0x3c
print(s) --> # 60
4) ๋ฌธ์์ด.format()์ ์ฌ์ฉํ ์ง์ ๋ณํ
๋ฌธ์์ด์์ ์ ๊ณตํ๋ format()
๋ฉ์๋๋ฅผ ์ฌ์ฉํด์ ๋ณํํ๋ ๋ฐฉ๋ฒ!
s = "2์ง์:{0:#b}, 8์ง์:{0:#o}, 10์ง์:{0:#d}, 16์ง์:{0:#x}".format(60)
print(s) --> # 2์ง์: 0b111100, 8์ง์: 0o74, 10์ง์: 60, 16์ง์: 0x3c
์ฌ๊ธฐ์๋ ์์ ๊ฒฝ์ฐ์ ๋ง์ฐฌ๊ฐ์ง๋ก #์ ์ ๊ฑฐํ๋ฉด ์ ๋์ด๊ฐ ๋น ์ง ํํ๋ก ๋ฐํ๋๋ค.
s = "2์ง์:{0:b}, 8์ง์:{0:o}, 10์ง์:{0:d}, 16์ง์:{0:x}".format(60)
print(s) --> # 2์ง์: 111100, 8์ง์: 74, 10์ง์: 60, 16์ง์: 3c
๋ฌธ์์ด ๊ด๋ จ ๋ด์ฅํจ์
model solution์ ๋ณด๋ฉด, 1์ ๊ธฐ์ค์ผ๋ก split()
ํ๊ณ , ๊ทธ ์ด์ ์ strip()
์ด๋ผ๋ ํจ์๊ฐ ๋์จ๋ค.
๋ฌธ์ ๋ ๋ strip()
์ด ๋ฌด์จ ํจ์์ธ์ง ๋ชจ๋ฅธ๋ค๋ ๊ฒ..!!!! ์ด ๊ธฐํ๋ฅผ ๋์น์ง ์๊ณ ๋ด์น๊น์ ๋ฌธ์์ด ๊ด๋ จ ๋ด์ฅํจ์ ์ ๋ฆฌ ๊ฐ๋๋ท
๐๐ป ๋ฌธ์์ด ํจ์: read(), strip(), replace()
1. read()
๋ด๊ฐ ๊ฐ์ง ๋ฌธ์์ด ๋ฐ์ดํฐ๋ฅผ ๋ผ์ธ ๊ตฌ๋ถ ์์ด, ๋ชจ๋ ๋ด์ฉ์ ํ๊บผ๋ฒ์ ์ฐ๊ฒฐํด์ ํํํด์ค๋ค.
2. strip()
๋ด๊ฐ ํ์ํ ๋ฐ์ดํฐ๊ฐ ACGT๋ก ์ด๋ฃจ์ด์ง ๋ฐ์ดํฐ๋ผ๊ณ ๊ฐ์ ํ๊ณ ์ด๋ฅผ ์ถ์ถํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผํ ๊น?
๐๐ป โฉn์ด๋ผ๋ ์ํฐ์ ํด๋นํ๋ ํน์ ๊ธฐํธ๋ฅผ ์ญ์ ํ๊ณ , ๋งจ ์์ header๋ฅผ ๋ ๋ ค์ฃผ์ด์ผ ํ๋ค.
์ง๊ธ์ฒ๋ผ ์
๋ ฅ๋ฐ์ ๋ฌธ์์ด์ด ์์ ๋, strip()
ํจ์๋ฅผ ์ฌ์ฉํ๋ฉด ๊ณต๋ฐฑ, โฉn ๊ธฐํธ๋ฅผ ์ญ์ ํ ๊ฒฐ๊ณผ๋ฌผ์ ํ์ธํ ์ ์๋ค.
ํ์ง๋ง strip()
ํจ์๋ ๋ฌธ์์ด ์ค๊ฐ์ ์กด์ฌํ๋ ๊ฒ์ ์ ๊ฑฐํด์ฃผ์ง ์๋๋ค.
์ด๋ ๊ฒ ๋ฌธ์์ด ์ค๊ฐ์ ๊ฒ๋ค์ ์ ๊ฑฐ๋์ง ์์ ๊ฒ์ ํ์ธํ ์ ์๋ค.
3. replace()
์ด๋ด๋ ์ฌ์ฉํ๋๊ฒ์ด replace()
ํจ์! ์ด๋ฆ ๊ทธ๋๋ก ๋์ฒดํ๋ค๋ ๋ป์ผ๋ก, ์ฒซ๋ฒ์งธ ์ธ์๋ฅผ ๋๋ฒ์งธ ์ธ์๋ก ๋์ฒดํ๋ ๊ฒ์ด๋ค.
์ฒซ๋ฒ์งธ๋ก๋ header์ ๋ฌธ์์ด์ ๊ทธ๋๋ก ์
๋ ฅํ๊ณ , ""์ ๋๋ฒ์งธ ์ธ์๋ก ์
๋ ฅํด์ header --> ""
๋ก ๋์ฒดํ๋๋ก ํ์๋ค.
๊ทธ ์ดํ์ ๋ replace()
ํจ์๋ฅผ ์ฌ์ฉํด์ โฉn์ ์ ๊ฑฐํ๋ฉด ์ํ๋ ๊ฒ๋ค์ ์ฐจ๋ก๋ก ๋ชจ๋ ์ ๊ฑฐํ ์ ์๋ค.
์ง์์ง ๊ฒ๋ค์ ์์๋ฅผ ์ ์๊ฐํด์ ์ ์ฉํ ๊ฒ!
Author And Source
์ด ๋ฌธ์ ์ ๊ดํ์ฌ([ Code Kata ] ๐คฏ python #16 ์์๋ฅผ ์ด์ง๋ฒ์ผ๋ก ๋ฐ๊พผ ๋ค ๊ฐ์ฅ ํฐ 0์ ์ฐ์์ ๋ฆฌํดํ๊ธฐ / ์ซ์๊ด๋ จ ๋ด์ฅํจ์ / strip( )), ์ฐ๋ฆฌ๋ ์ด๊ณณ์์ ๋ ๋ง์ ์๋ฃ๋ฅผ ๋ฐ๊ฒฌํ๊ณ ๋งํฌ๋ฅผ ํด๋ฆญํ์ฌ ๋ณด์๋ค https://velog.io/@haileeyu21/Code-Kata-python-16-์์๋ฅผ-์ด์ง๋ฒ์ผ๋ก-๋ฐ๊พผ-๋ค-๊ฐ์ฅ-ํฐ-0์-์ฐ์์-๋ฆฌํดํ๊ธฐ-์ซ์๊ด๋ จ-๋ด์ฅํจ์-strip์ ์ ๊ท์: ์์์ ์ ๋ณด๊ฐ ์์์ URL์ ํฌํจ๋์ด ์์ผ๋ฉฐ ์ ์๊ถ์ ์์์ ์์ ์ ๋๋ค.
์ฐ์ํ ๊ฐ๋ฐ์ ์ฝํ ์ธ ๋ฐ๊ฒฌ์ ์ ๋ (Collection and Share based on the CC Protocol.)
์ข์ ์นํ์ด์ง ์ฆ๊ฒจ์ฐพ๊ธฐ
๊ฐ๋ฐ์ ์ฐ์ ์ฌ์ดํธ ์์ง
๊ฐ๋ฐ์๊ฐ ์์์ผ ํ ํ์ ์ฌ์ดํธ 100์ ์ถ์ฒ ์ฐ๋ฆฌ๋ ๋น์ ์ ์ํด 100๊ฐ์ ์์ฃผ ์ฌ์ฉํ๋ ๊ฐ๋ฐ์ ํ์ต ์ฌ์ดํธ๋ฅผ ์ ๋ฆฌํ์ต๋๋ค