[python ๊ธฐ์ดˆ] code-kata week1-1

EMMAยท2022๋…„ 3์›” 15์ผ
0

[wecode] Code-kata

๋ชฉ๋ก ๋ณด๊ธฐ
1/12
post-custom-banner

๐Ÿ–ฅ Code kata week1 - 1


๋ฌธ์ œ
two_sumํ•จ์ˆ˜์— ์ˆซ์ž ๋ฆฌ์ŠคํŠธ์™€ 'ํŠน์ • ์ˆ˜'๋ฅผ ์ธ์ž๋กœ ๋„˜๊ธฐ๋ฉด, ๋”ํ•ด์„œ 'ํŠน์ • ์ˆ˜'๊ฐ€ ๋‚˜์˜ค๋Š” index๋ฅผ ๋ฐฐ์—ด์— ๋‹ด์•„ returnํ•ด ์ฃผ์„ธ์š”.

nums: ์ˆซ์ž ๋ฐฐ์—ด
target: ๋‘ ์ˆ˜๋ฅผ ๋”ํ•ด์„œ ๋‚˜์˜ฌ ์ˆ˜ ์žˆ๋Š” ํ•ฉ๊ณ„
return: ๋‘ ์ˆ˜์˜ index๋ฅผ ๊ฐ€์ง„ ์ˆซ์ž ๋ฐฐ์—ด

์˜ˆ๋ฅผ ๋“ค์–ด,

nums์€ [4, 9, 11, 14]
target์€ 13

nums[0] + nums[1] = 4 + 9 = 13 ์ด์ฃ ?

๊ทธ๋Ÿฌ๋ฉด [0, 1]์ด return ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
nums์€ [4, 9, 11, 14]
target์€ 13

nums[0] + nums[1] = 4 + 9 = 13 ์ด์ฃ ?

๊ทธ๋Ÿฌ๋ฉด [0, 1]์ด return ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ฐ€์ •
target์œผ๋กœ ๋ณด๋‚ด๋Š” ํ•ฉ๊ณ„์˜ ์กฐํ•ฉ์€ ๋ฐฐ์—ด ์ „์ฒด ์ค‘์— 2๊ฐœ ๋ฐ–์— ์—†๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.


ํ’€์ด

์ผ๋‹จ, input์— ๋”ฐ๋ฅธ output์„ ๋จผ์ € ์ƒ๊ฐํ–ˆ๋‹ค.
์ˆซ์ž list ์š”์†Œ ์ค‘, 2๊ฐœ๋ฅผ ๊ณจ๋ž์„ ๋•Œ x+y = target์ด ๋˜์–ด์•ผ ํ•œ๋‹ค.
๊ทธ๋ฆฌ๊ณ  return์€ ๊ฐ ์ˆซ์ž์˜ index๋กœ ๊ตฌ์„ฑ๋œ list๋‹ค.

์ฒ˜์Œ์—๋Š” nums์—์„œ ์ˆœ์„œ๋Œ€๋กœ 2๊ฐœ์”ฉ ๊บผ๋‚ด ํ•ฉํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์ƒ๊ฐํ•ด๋ดค๋‹ค.

def two_sum(nums, target):
    # ์•„๋ž˜ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”.
    result = 0
	for i in range(len(nums)):
    	result += nums[i]
        if result == target:
        	... 

๊ทธ๋Ÿฐ๋ฐ for๋ฌธ์€ 0,1,2... ์ด๋ ‡๊ฒŒ ์ˆœ์„œ๋Œ€๋กœ ๋Œ์•„๊ฐ€๊ณ  ์ •์ž‘ ์–ด๋–ค ์ˆœ์„œ์˜ ์ˆซ์ž๊ฐ€ x์™€ y๊ฐ€ ๋ ์ง€๋Š” ์•Œ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ ํ•ฉํ•˜์ง€ ์•Š์Œ.

๊ทธ๋ž˜์„œ ๋”ํ•˜๊ธฐ ๋Œ€์‹  ๋นผ๊ธฐ์˜ ๋ฐฉ์‹์œผ๋กœ ์ƒ๊ฐ์„ ๋ฐ”๊ฟจ๋‹ค.
๊ทธ๋Ÿฌ๋ฉด nums[0]๋ถ€ํ„ฐ target์—์„œ ๊ฐ’์„ ๋นผ๊ณ , ์ด ๊ฐ’์ด ๋‹ค๋ฅธ ์ˆซ์ž๋“ค ์ค‘์— ํ•˜๋‚˜์™€ ์ผ์น˜ํ•œ๋‹ค๋ฉด x์™€ y ๋„์ถœ ๊ฐ€๋Šฅ.

๊ทธ๋ฆฌ๊ณ  ์ผ์น˜ํ•˜๋Š” ์ˆซ์ž๋ฅผ ์ฐพ์„ ๋•Œ๋Š” nums[0]์„ ์ œ์™ธํ•˜๊ณ  ์ฐพ์•„์•ผ ํ•˜๋ฏ€๋กœ,
nums[1:]์—์„œ ์ผ์น˜ํ•˜๋Š” ์ˆซ์ž๋ฅผ ์ฐพ์œผ๋ฉด ๋œ๋‹ค.

def two_sum(nums, target):
    # ์•„๋ž˜ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”.
    result = 0
	for i in range(len(nums)):
    	result = target - nums[i]
        if result in nums[i+1:]:
        	... 

๋งŒ์•ฝ ์ผ์น˜ํ•˜๋Š” ์ˆซ์ž๊ฐ€ ์—†๋‹ค๋ฉด, ์ผ๋‹จ nums[0]์€ x๋‚˜ y๊ฐ€ ์•„๋‹Œ ๊ฒƒ.
์œ„์˜ ์ฝ”๋“œ์—์„œ ๋‹ค์‹œ develop ํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

def two_sum(nums, target):
    # ์•„๋ž˜ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”.
  result=0
  for i in range(len(nums)):
    result=target-nums[i]
    nums2=nums[i+1:]	#๋‚˜๋จธ์ง€ ์ˆซ์ž list๋ฅผ nums2์— ๋Œ€์ž…

    if result in nums2:
      num1_position = i
      num2_position = nums2.index(result)+i+1
      return [num1_position,num2_position] 
    else:
      continue

์ž‘์„ฑ ํ›„์— ์ด์ค‘ for๋ฌธ๊ณผ ๊ฐ™์ด ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ์–˜๊ธฐํ•ด ๋ณด๋‹ค๊ฐ€, ์‹œ๊ฐ„๋ณต์žก๋„๋ผ๋Š” ๊ฐœ๋…์— ๋Œ€ํ•ด์„œ ๋ฐฐ์› ๋‹ค. ์ž๋ฃŒ ์œ ํ˜•, ์—ฐ์‚ฐ์— ๋”ฐ๋ผ ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ ๋‹ค๋ฅด๋‹ค.
์ด๋ฅผ ํ™œ์šฉํ•˜๋ฉด ๋Œ€๋žต์ ์ธ ๋Ÿฐํƒ€์ž„์„ ๊ฐ€๋Š ํ•  ์ˆ˜ ์žˆ์–ด ์œ ์šฉํ•  ๊ฒƒ ๊ฐ™๋‹ค.

profile
์˜ˆ๋น„ ๊ฐœ๋ฐœ์ž์˜ ๊ธฐ์ˆ  ๋ธ”๋กœ๊ทธ | explore, explore and explore
post-custom-banner

0๊ฐœ์˜ ๋Œ“๊ธ€