[Algorithm] ์์ฐจ ํ์
์์ฐจ ํ์(Sequential search) ์๊ณ ๋ฆฌ์ฆ
๋ฆฌ์คํธ ์์ ์๋ ์์๋ฅผ ํ๋์ฉ ์์ฐจ์ ์ผ๋ก ๋น๊ตํ๋ฉด์ ํ์ํ๋ค๊ณ ํ์ฌ ์์ฐจ ํ์์ด๋ผ๊ณ ํฉ๋๋ค.
์ฒซ ๋ฒ์งธ ์๋ฃ๋ถํฐ ํ๋์ฉ ๋น๊ตํ๋ฉด์ ๊ฐ์ ๊ฐ์ด ๋์ค๋ฉด ๊ทธ ์์น๋ฅผ ๊ฒฐ๊ณผ๋ก ๋๋ ค์ฃผ๊ณ , ๋ฆฌ์คํธ ๋๊น์ง ์ฐพ์๋ ๊ฐ์ ๊ฐ์ด ๋์ค์ง ์์ผ๋ฉด -1์ ๋๋ ค์ฃผ๋ฉด ๋ฉ๋๋ค.
def search_list(v, num):
for i in range(0, len(v)-1):
if num == v[i]:
return i
return -1
v = [17, 92, 18, 33, 58, 7, 33, 42]
print(search_list(v, 18))
print(search_list(v, 33)) # ์ฒซ ๋ฒ์งธ ์์น๋ง ๊ฒฐ๊ณผ๋ก ๋๋ ค์ค๋๋ค.
print(search_list(v, 900))
๊ณ์ฐ ๋ณต์ก๋๋ O(n)
์ฐ์ต๋ฌธ์
๋ฆฌ์คํธ์์ ํน์ ์ซ์์ ์์น๋ฅผ ์ ๋ถ ์ฐพ๊ธฐ
์ฐพ๋ ๊ฐ์ด ๋์ค๋ ๋ชจ๋ ์์น๋ฅผ ๋ฆฌ์คํธ๋ก ๋๋ ค์ฃผ๋ ํ์ ์๊ณ ๋ฆฌ์ฆ์ ๋ง๋ค๊ณ , ์ฐพ๋ ๊ฐ์ด ๋ฆฌ์คํธ์ ์๋ค๋ฉด ๋น ๋ฆฌ์คํธ์ธ []๋ฅผ ๋๋ ค์ค๋๋ค.
def search_list(v, num):
result = [] # ์ ๋ฆฌ์คํธ๋ฅผ ๋ง๋ค์ด ๊ฒฐ๊ด๊ฐ์ ์ ์ฅ
for i in range(0, len(v)-1):
if num == v[i]:
result.append(i)
return result
v = [17, 92, 18, 33, 58, 7, 33, 42]
print(search_list(v, 18))
print(search_list(v, 33))
print(search_list(v, 900))
๊ณ์ฐ ๋ณต์ก๋๋ O(n)
ํ์ ๋ฒํธ์ ํด๋นํ๋ ํ์ ์ด๋ฆ ์ฐพ๊ธฐ
๋ค์๊ณผ ๊ฐ์ด ํ์ ๋ฒํธ์ ์ด๋ฆ์ด ๋ฆฌ์คํธ๋ก ์ฃผ์ด์ก์ ๋ ํ์ ๋ฒํธ๋ฅผ ์
๋ ฅํ๋ฉด
ํ์ ๋ฒํธ์ ํด๋นํ๋ ์ด๋ฆ์ ์์ฐจ ํ์์ผ๋ก ์ฐพ์ ๋๋ ค์ฃผ๋ ํจ์๋ฅผ ๋ง๋ค๊ธฐ.
ํด๋นํ๋ ํ์ ๋ฒํธ๊ฐ ์์ผ๋ฉด ๋ฌผ์ํ(?)๋ฅผ ๋๋ ค์ค๋๋ค.
์ฐธ๊ณ ๋ก ํ์ ๋ฒํธ๊ฐ 39๋ฒ์ด๋ฉด โJustinโ, 14๋ฒ์ด๋ฉด โJohnโ์ ๋๋ ค์ค๋๋ค.
stu_no = [39, 14, 67, 105]
stu_name = ["Justin", "john", "Mike", "Summer"]
def get_name(stu_no, stu_name, find_num):
for i in range(0, len(stu_no)):
if find_num == stu_no[i]:
return stu_name[i]
return "?"
stu_no = [39, 14, 67, 105]
stu_name = ["Justin", "john", "Mike", "Summer"]
find_num = int(input())
print(get_name(stu_no, stu_name, find_num))