[ 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์ง„์ˆ˜ ๋ณ€ํ™˜ํ•˜๊ธฐ

์˜ค๋Š˜์˜ ์ฝ”๋“œ์นดํƒ€๋Š” '๋ชจ์—ฌ์„œํ•จ๊ป˜์ฝ”๋”ฉ'์ด์—ˆ๋˜ ๋ฐ”๋žŒ์— ๋ฌธ์ œ๋ฅผ ํ’€์–ด๋ณผ ์ˆ˜ ์—†์—ˆ๋‹ค ํ•˜ํ•˜ํ•˜ํ•ณ
(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))

์—ญ์‹œ๋‚˜ ์˜ˆ์ƒํ–ˆ๋˜๋Œ€๋กœ ์ž…๋ ฅ๋ฐ›์€ ์ˆซ์ž๋ฅผ ๋‚ด์žฅํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ง„ํ–‰ํ–ˆ๋˜ ๊ฒƒ!!
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์„ ์ œ๊ฑฐํ•˜๋ฉด ์›ํ•˜๋Š” ๊ฒƒ๋“ค์„ ์ฐจ๋ก€๋กœ ๋ชจ๋‘ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ๋‹ค.

์ง€์›Œ์งˆ ๊ฒƒ๋“ค์˜ ์ˆœ์„œ๋ฅผ ์ž˜ ์ƒ๊ฐํ•ด์„œ ์ ์šฉํ•  ๊ฒƒ!

์ข‹์€ ์›นํŽ˜์ด์ง€ ์ฆ๊ฒจ์ฐพ๊ธฐ