๐Ÿ’ป Code-Kata 1

Min-Ho Leeยท2020๋…„ 7์›” 6์ผ
0

Algorithm

๋ชฉ๋ก ๋ณด๊ธฐ
1/7
post-thumbnail

Monday_July_6
.
.
.

๐Ÿ“œ ๋ฌธ์ œ

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

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

์˜ˆ๋ฅผ ๋“ค์–ด,
nums๋Š” [4, 9, 11, 14]
target์€ 13 ์ด๋ผ๊ณ  ๊ฐ€์ •์„ ํ–ˆ์„ ๋•Œ,

4 + 9 = 13

4๋Š” nums[0], 9๋Š” nums[1] ์ด๋‹ˆ๊นŒ
return ํ•  ๋ฐฐ์—ด์—๋Š” [0, 1]์ด return ๋˜์–ด์•ผ ํ•œ๋‹ค.

โ—๏ธ target์œผ๋กœ ๋ณด๋‚ด๋Š” ํ•ฉ๊ณ„์˜ ์กฐํ•ฉ์€, ๋ฐฐ์—ด ์ „์ฒด ์ค‘์— ๋ฌด์กฐ๊ฑด ํ•˜๋‚˜๋งŒ ์กด์žฌํ•œ๋‹ค.

1๏ธโƒฃ ๋ฐฉ๋ฒ•

# ํ•จ์ˆ˜ ์ •์˜
def return_index(nums, target):
  for num1 in nums:
    # ์ฒซ ๋ฒˆ์งธ for ๋ฌธ์—์„œ ์š”์†Œ์˜ index๋ฅผ ๊ธฐ์–ตํ•œ๋‹ค.
    first_nums_index = nums.index(num1)
    # ๋‘ ๋ฒˆ์งธ for๋ฌธ์„ ํšจ์œจ์ ์œผ๋กœ ๋Œ๋ฆฌ๊ธฐ ์œ„ํ•ด ์ฒซ ๋ฒˆ์งธ ๋ฐฐ์—ด์˜ ์š”์†Œ์˜ ๋‹ค์Œ ์š”์†Œ๋ถ€ํ„ฐ for๋ฌธ์„ ๋Œ๋ฆฐ๋‹ค.
    for num2 in nums[first_nums_index:]:
    # ๊ทธ๋ž˜์„œ ์ฒซ ๋ฒˆ์งธ for๋ฌธ์˜ ์š”์†Œ index๋ฅผ ๊ธฐ์–ตํ•ด ์ค€ ๊ฒƒ์ด๋‹ค.
      if num1 + num2 == target: # ํ•ฉ์ด target์˜ ๊ฐ’๊ณผ ๊ฐ™๋‹ค๋ฉด,
      	# list๋ผ๋Š” ๋ฐฐ์—ด์— ๋‘ ๊ฐ’์˜ index๋ฅผ ๋„ฃ์–ด์ค€๋‹ค.
        list = [nums.index(num1), nums.index(num2)]
        return list

๋‚˜๋Š” ์œ„์˜ ์ฝ”๋“œ์™€ ๊ฐ™์ด ํ’€์—ˆ๋Š”๋ฐ, ์ฐพ์•„๋ณด๋‹ˆ for๋ฌธ ์ž์ฒด์—์„œ value๊ฐ€ ์•„๋‹Œ, index์˜ ๊ฐ’์„
๊ฐ€์ ธ์˜ฌ ์ˆ˜๋„ ์žˆ์—ˆ๋‹ค.

๋ฐ”๋กœ Enumerate ๋ผ๋Š” ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•œ ๊ฒƒ์ด๋‹ค.

2๏ธโƒฃ ๋ฐฉ๋ฒ•

Enumerate ํ•จ์ˆ˜ ์‚ฌ์šฉ

enumerate ํ•จ์ˆ˜์˜ ์‚ฌ์šฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

์ฒซ ๋ฒˆ์งธ ๋ณ€์ˆ˜ ์ž๋ฆฌ์—๋Š” index๊ฐ€,
๋‘ ๋ฒˆ์งธ ๋ณ€์ˆ˜ ์ž๋ฆฌ์—๋Š” value์˜ ๊ฐ’์ด ์˜จ๋‹ค.

๋”ฐ๋ผ์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฝ”๋“œ๋ฅผ ์ถœ๋ ฅํ•˜๋ฉด

str = "wecode"
for a, b in enumerate(str):
  print(a, b)

๊ฒฐ๊ณผ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

0 w
1 e
2 c
3 o
4 d
5 e

์œ„์˜ enumerate ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค์‹œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด ๋ดค๋‹ค.

def return_index(nums, target):
  for i1, num1 in enumerate(nums): # 1
    first_nums_index = nums.index(num1)
    for i2, num2 in enumerate(nums[first_nums_index:]): # 2
      if num1 + num2 == target:
        list = [i1,i2] # 3
        return list

์•„๊นŒ์™€ ๋‹ค๋ฅธ์ ์€ # 1, 2, 3 ๋ถ€๋ถ„์ด๋‹ค.

#1์€ i1์ด๋ผ๋Š” ๋ณ€์ˆ˜์— num1์˜ index ๊ฐ’์„ ๊ธฐ์–ตํ•˜๋„๋ก ํ•˜์˜€๊ณ 
#2๋Š” i2๋ผ๋Š” ๋ณ€์ˆ˜์—๋Š” num2์˜ index ๊ฐ’์„ ๊ธฐ์–ตํ•˜๋„๋ก ํ•˜์˜€๊ณ 
#3์—๋Š” ์•„๊นŒ์™€๋Š” ๋‹ค๋ฅด๊ฒŒ ๊ธธ๊ฒŒ ์ฃผ์—ˆ๋˜ index์˜ ๊ฐ’์„ i1๊ณผ i2๋กœ ๋„ฃ์–ด์ฃผ์—ˆ๋‹ค.

profile
๐Ÿ‡ Rabbit can take a rest, but ๐Ÿข turtle can't

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