๋ฌธ์ ๋ฅผ ํด๊ฒฐ
ํ๋๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ๊ณผ์ ์๊ด๊ด๊ณ
๊ฐ ์ค์ด ์คํ๋๋ ๊ฑธ 1๋ฒ์ ์ฐ์ฐ์ด ๋๋ค๊ณ ์๊ฐํ๋ฉด ๋จ
input=[3,5,6,1,2,4]
for num in array: # array ์ ๊ธธ์ด๋งํผ ์๋ ์ฐ์ฐ์ด ์คํ
for compare_num in array: # array ์ ๊ธธ์ด๋งํผ ์๋ ์ฐ์ฐ์ด ์คํ
if num < compare_num: # ๋น๊ต ์ฐ์ฐ 1๋ฒ ์คํ
break
else:
return num
array(์ ๋ ฅ๊ฐ)์ ๊ธธ์ด๋ N์ด๋ผ๊ณ ํํ
์ฆ ์์ ์ฐ์ฐ๋๊ฒ์ ๋ํด๋ณด๋ฉด N * N
+ 1
Nยฒ๋งํผ์ ์๊ฐ์ด ๊ฑธ๋ ธ๊ฒ ๊ตฌ๋ ๊ณ์ฐ ๊ฐ๋ฅ
input = [3, 5, 6, 1, 2, 4]
def find_max_num(array):
max_num = array[0] # ์ฐ์ฐ 1๋ฒ ์คํ
for num in array: # array ๊ธธ์ด๋งํผ ์๋ ์ฐ์ฐ ์คํ
if num > max_num: # ๋น๊ต ์ฐ์ฐ 1๋ฒ ์คํ
max_num = num # ๋์
์ฐ์ฐ 1๋ฒ ์คํ
return max_num
์์ ํ๋ก ๊นจ๋ฌ์๋ณด๊ธฐ
N ์ด ์ปค์ง ์๋ก ๋ ํฐ ์ฐจ์ด
๊ฐ ๋จN์ ์ง์๋ฅผ ๋จผ์ ๋น๊ต
ํ์ฌ ์๊ฐ๋ณต์ก๋๋ฅผ ๋ถ์
ํ๋ฉด ์ข์์์
๋ ์ ๊ฒฝ ์ธ ํ์ ์์์ ๋ ฅ๊ฐ์ด๋?
ํจ์์์ ํฌ๊ธฐ ํน์ ๊ธธ์ด๊ฐ ๋ณ๊ฒฝ
๋ ์ ์๋ ๊ฐ
์์์ผ๋ก ํํํด์ผ ์ฌ๋ฐ๋ฅธ ์๊ณ ๋ฆฌ์ฆ์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ตฌํ ์ ์์
์ ๋ ฅ๊ฐ๊ณผ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐ ๊ฑธ๋ฆฌ๋ ๊ณต๊ฐ๊ณผ์ ์๊ด๊ด๊ณ
์ ์ฅํ๋ ๋ฐ์ดํฐ์ ์์ด 1๊ฐ์ ๊ณต๊ฐ์ ์ฌ์ฉํ๋ค
# ์ฒซ๋ฒ์งธ ๋ฐฉ๋ฒ ๊ณต๊ฐ๋ณต์ก๋ ํ์
(29๊ฐ ๊ณต๊ฐ)
input = "hello my name is sparta"
def find_max_occurred_alphabet(string):
alphabet_array = ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t",
"u","v","w","x","y","z"] # -> 26๊ฐ์ ๊ณต๊ฐ
max_occurrence = 0 # 1๊ฐ์ ๊ณต๊ฐ
max_alphabet = alphabet_array[0] #1๊ฐ์ ๊ณต๊ฐ
for alphabet in alphabet_array:
occurrence = 0 # 1๊ฐ์ ๊ณต๊ฐ
for char in string:
if char == alphabet:
occurrence += 1
if occurrence > max_occurrence:
max_occurrence = occurrence
max_alphabet = alphabet
return max_alphabet
result = find_max_occurred_alphabet(input)
print(result)
# ๋๋ฒ์งธ ๋ฐฉ๋ฒ ๊ณต๊ฐ๋ณต์ก๋ ํ์
(30๊ฐ ๊ณต๊ฐ)
def find_max_occurred_alphabet(string):
alphabet_occurrence_list = [0] * 26 # -> 26๊ฐ ๊ณต๊ฐ
for char in string:
if not char.isalpha():
continue
arr_index = ord(char) - ord('a') # 1๊ฐ์ ๊ณต๊ฐ
alphabet_occurrence_list[arr_index] += 1
max_occurrence = 0 # 1๊ฐ ๊ณต๊ฐ
max_alphabet_index = 0 # 1๊ฐ ๊ณต๊ฐ
for index in range(len(alphabet_occurrence_list)):
alphabet_occurrence = alphabet_occurrence_list[index] # 1๊ฐ์ ๊ณต๊ฐ
if alphabet_occurrence > max_occurrence:
max_occurrence = alphabet_occurrence
max_alphabet_index = index
return chr(max_alphabet_index + ord('a'))
result = find_max_occurred_alphabet
print("์ ๋ต = a ํ์ฌ ํ์ด ๊ฐ =", result("Hello my name is sparta"))
print("์ ๋ต = a ํ์ฌ ํ์ด ๊ฐ =", result("Sparta coding club"))
print("์ ๋ต = s ํ์ฌ ํ์ด ๊ฐ =", result("best of best sparta"))
โ๏ธย ๊ทธ๋ฌ๋ฉด ๊ณต๊ฐ์ ๋ ์ ๊ฒ ์ด ์ฒซ๋ฒ์งธ ๋ฐฉ๋ฒ์ด ๋ ํจ์จ์ ์ผ๊น?
๊ทธ๋ ์ง ์์! ์ฑ๋ฅ์ ์๋ฌด๋ฐ ์ฐจ์ด๊ฐ ์๋ค!
29์ 30 ๋ชจ๋ ์์๋ผ ํฐ ์๊ด์ด ์์
์๊ฐ ๋ณต์ก๋๋ก ๋น๊ตํ๋ฉด ๋จ
์ฒซ๋ฒ์งธ ์๊ฐ๋ณต์ก๋
for alphabet in alphabet_array: # alphabet_array ์ ๊ธธ์ด(26)๋งํผ ์๋ ์ฐ์ฐ์ด ์คํ
occurrence = 0 # ๋์
์ฐ์ฐ 1๋ฒ ์คํ
for char in string: # string ์ ๊ธธ์ด๋งํผ ์๋ ์ฐ์ฐ์ด ์คํ
if char == alphabet: # ๋น๊ต ์ฐ์ฐ 1๋ฒ ์คํ
occurrence += 1 # ๋์
์ฐ์ฐ 1๋ฒ ์คํ
if occurrence > max_occurrence: # ๋น๊ต ์ฐ์ฐ 1๋ฒ ์คํ
max_alphabet = alphabet # ๋์
์ฐ์ฐ 1๋ฒ ์คํ
max_occurrence = number # ๋์
์ฐ์ฐ 1๋ฒ ์คํ
๋๋ฒ์งธ ์๊ฐ๋ณต์ก๋
for char in string: # string ์ ๊ธธ์ด๋งํผ ์๋ ์ฐ์ฐ์ด ์คํ
if not char.isalpha(): # ๋น๊ต ์ฐ์ฐ 1๋ฒ ์คํ
continue
arr_index = ord(char) - ord('a') # ๋์
์ฐ์ฐ 1๋ฒ ์คํ
alphabet_occurrence_list[arr_index] += 1 # ๋์
์ฐ์ฐ 1๋ฒ ์คํ
max_occurrence = 0 # ๋์
์ฐ์ฐ 1๋ฒ ์คํ
max_alphabet_index = 0 # ๋์
์ฐ์ฐ 1๋ฒ ์คํ
for index in range(len(alphabet_occurrence_list)): # alphabet_array ์ ๊ธธ์ด(26)๋งํผ ์๋ ์ฐ์ฐ์ด ์คํ
alphabet_occurrence = alphabet_occurrence_list[index] # ๋์
์ฐ์ฐ 1๋ฒ ์คํ
if alphabet_occurrence > max_occurrence: # ๋น๊ต ์ฐ์ฐ 1๋ฒ ์คํ
max_occurrence = alphabet_occurrence # ๋์
์ฐ์ฐ 1๋ฒ ์คํ
max_alphabet_index = index # ๋์
์ฐ์ฐ 1๋ฒ ์คํ
string์ ๊ธธ์ด X (๋น๊ต ์ฐ์ฐ 1๋ฒ + ๋์ ์ฐ์ฐ 2๋ฒ)
๋์ ์ฐ์ฐ 2๋ฒ
alphabet_array ์ ๊ธธ์ด X (๋น๊ต ์ฐ์ฐ 1๋ฒ + ๋์ ์ฐ์ฐ 3๋ฒ)
์์ ์ฐ์ฐ์ N ( 1 + 2 ) + 2 + 26 ( 1 + 3 ) = 3N + 106
๊ณต๊ฐ๋ณต์ก๋ ๋ณด๋จ
์๊ฐ๋ณต์ก๋๋ฅผ ์ค์
ํ๊ฒ ์๊ฐ!
Nยฒ์ ๋นํ๋ฉด ์๋ฌด๊ฒ๋ ์๋
์ ๊ทผ ํ๊ธฐ๋ฒ
์ด๋?
์๊ณ ๋ฆฌ์ฆ์ ์ฑ๋ฅ์ ์ํ์ ์ผ๋ก ํํ
ํ๋ ๊ฒ
์ ๊ทผ ํ๊ธฐ๋ฒ ์ข ๋ฅ
์ ๊ทผ ํ๊ธฐ๋ฒ์ ์ข
๋ฅ์๋
๋น
์ค(Big-O)
, ๋น
์ค๋ฉ๊ฐ(Big-ฮฉ)
์ด ์์ต๋๋ค.
๋น
์ค(Big-O)
: ์ต์
์ ์ฑ๋ฅ์ด ๋์ฌ ๋ ์ด๋ ์ ๋์ ์ฐ์ฐ๋์ด ๊ฑธ๋ฆด๊ฒ์ธ์ง
๋น
์ค๋ฉ๊ฐ(Big-ฮฉ)
: ์ต์ ์ ์ฑ๋ฅ์ด ๋์ฌ ๋ ์ด๋ ์ ๋์ ์ฐ์ฐ๋์ด ๊ฑธ๋ฆด๊ฒ์ธ์ง
def is_number_exist(number, array):
for element in array: # array ์ ๊ธธ์ด๋งํผ ์๋ ์ฐ์ฐ์ด ์คํ
if number == element: # ๋น๊ต ์ฐ์ฐ 1๋ฒ ์คํ
return True # N * 1 = N๋งํผ
return False
result = is_number_exist
print("์ ๋ต = True ํ์ฌ ํ์ด ๊ฐ =", result(3,[3,5,6,1,2,4]))
print("์ ๋ต = Flase ํ์ฌ ํ์ด ๊ฐ =", result(7,[6,6,6]))
print("์ ๋ต = True ํ์ฌ ํ์ด ๊ฐ =", result(2,[6,9,2,7,1888]))
์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉ์์ ์ ๋ ฅ๊ฐ์ ์ํด ์๋๊ฐ ์ข์ฐ๋๊ธฐ ๋๋ฌธ์,
์ต์ ์ธ ๋น ์ค๋ฉ๊ฐ๋ณด๋ค, ์ต์ ์ธ ๋น ์ค๋ฅผ ์์ฃผ ์ฌ์ฉํ๊ฒ ๋ ๊ฒ