Study_note(zb_data)/Python
์คํฐ๋ ๋ ธํธ (์๊ณ ๋ฆฌ์ฆ 1-18)_0724
KloudHyun
2023. 7. 31. 01:03
๐ ์ ํ๊ฒ์?
- ์ ํ์ผ๋ก ๋์ด๋์ด ์๋ ๋ฐ์ดํฐ๋ฅผ ์์ฐจ์ ์ผ๋ก ์ค์บํ๋ฉด์ ์ํ๋ ๊ฐ์ ์ฐพ๋๋ค
datas = [3, 2, 5, 7, 9, 1, 0, 8, 6, 4]
print(f'datas : {datas}')
print(f'datas length : {len(datas)}')
searchData = int(input('์ฐพ์ผ๋ ค๋ ์ซ์ ์
๋ ฅ : '))
searchResultIdx = -1
n = 0
while True:
if n == len(datas): #๋ง์ฝ n์ ๊ฐ์ด datas์ ๊ธธ์ด์ ๊ฐ๊ณผ ๊ฐ์์ง ๊ฒฝ์ฐ
searchResultIdx = -1 #๋ชป์ฐพ์์ผ๋ฏ๋ก -1 ์ถ๋ ฅ
break #๋ฐ๋ก break
elif datas[n] == searchData: #datas n์ ๊ฐ์ด ์ฐพ์ผ๋ ค๋ data๊ฐ๊ณผ ๊ฐ๋ค๋ฉด
searchResultIdx = n # ์ฐพ์ผ๋ ค๋ data๊ฐ์ idx๋ n์ ๊ฐ์ด๋ค
break #๋ฐ๋ก break
n+=1 #๋ชป์ฐพ์ ๋ ๋ฌดํ๋ฃจํ์ ๋น ์ง์ง ์๋๋ก n์ 1์ฉ ๋ํด์ค๋ค
print(f'searchResultIdx = {searchResultIdx}')
>>>>
datas : [3, 2, 5, 7, 9, 1, 0, 8, 6, 4]
datas length : 10
์ฐพ์ผ๋ ค๋ ์ซ์ ์
๋ ฅ : 10
searchResultIdx = -1
๐ ๋ณด์ด๋ฒ
- ๋ง์ง๋ง ์ธ๋ฑ์ค์ ์ฐพ์ผ๋ ค๋ ๊ฐ์ ์ถ๊ฐํด์ ์ฐพ๋ ๊ณผ์ ์ ๊ฐ๋ตํ ํ๋ค.
datas = [3, 2, 5, 7, 9, 1, 0, 8, 6, 4]
print(f'datas : {datas}')
print(f'datas length : {len(datas)}')
searchData = int(input('์ฐพ์ผ๋ ค๋ ์ซ์ ์
๋ ฅ : ')) #์ซ์๋ฅผ ์
๋ ฅ๋ฐ๋๋ค
searchResultIdx = -1 #๊ธฐ๋ณธ์ผ๋ก idx๋ฅผ ์ง์ ํ๋ค
datas.append(searchData) #๊ธฐ๋ณธ์ ์ผ๋ก ์
๋ ฅ๋ฐ์ ์ซ์๋ฅผ datas์ appendํ๋ค.
n = 0
while True:
if datas[n] == searchData: #๋ง์ฝ datas[n]์ ๋ฐ์ดํฐ๊ฐ์ด ์
๋ ฅ๋ฐ์ ์ซ์์ ๊ฐ๊ณ
if n != len(datas) - 1: #datas์ ๊ธธ์ด๊ฐ n์ ๊ฐ๊ณผ ๊ฐ์ง์๋ค๋ฉด
searchResultIdx = n #์
๋ ฅ๋ฐ์ ์ซ์์ idx๋ n์ด๋ค
break
n+=1 #๋ฌดํ๋ฃจํ์ ๋น ์ง์ง ์๋๋ก n์ ๊ณ์ ๋ํด์ค๋ค
print(f'datas : {datas}')
print(f'datas length : {len(datas)}')
print(f'searchResultIdx : {searchResultIdx}')
>>>>
datas : [3, 2, 5, 7, 9, 1, 0, 8, 6, 4]
datas length : 10
์ฐพ์ผ๋ ค๋ ์ซ์ ์
๋ ฅ : 10
datas : [3, 2, 5, 7, 9, 1, 0, 8, 6, 4, 10]
datas length : 11
searchResultIdx : -1
๐ ์ด์ง๊ฒ์
- ์ ๋ ฌ๋์ด ์๋ ์๋ฃ๊ตฌ์กฐ์์ ์ค์๊ฐ๊ณผ์ ํฌ๊ณ ์์์ ์ด์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ๋ค.
datas = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
print(f'datas : {datas}')
print(f'datas length : {len(datas)}')
searchData = int(input('search data : '))
searchResultIdx = -1
staIdx = 0
endIdx = len(datas) - 1 # index = 10
midIdx = (staIdx + endIdx) // 2 # 0 + 10 // 2 -> 5
midVal = datas[midIdx] # data[5]์ ๊ฐ
print(f'midIdx : {midIdx}')
print(f'midVal : {midVal}')
n = 0
while searchData <= datas[len(datas) - 1] and searchData >= datas[0]:
# ์
๋ ฅ๋ฐ์ ๋ฐ์ดํฐ <= datas์ ๋ง์ง๋ง ๋
ธ๋ and ์
๋ ฅ๋ฐ์ ๋ฐ์ดํฐ >= datas์ ์ฒซ๋ฒ์งธ ๋
ธ๋
# ์ฆ ๋ฐ์ดํฐ๊ฐ datas ๊ฐ์ ์ฌ์ด์ ์์ ๋
if searchData == datas[len(datas) - 1]: #์
๋ ฅ๋ฐ์ ๋ฐ์ดํฐ๊ฐ datas์ ๋ง์ง๋ง ๋
ธ๋๊ฐ๊ณผ ๊ฐ์ ๋
searchResultIdx = len(datas) - 1 #๋ฐ์ดํฐ์ Idx๋ datas์ ๋ง์ง๋ง ๋
ธ๋์ idx์ ๊ฐ๋ค
break #๋ฌดํ๋ฃจํ์ ๋น ์ง์ง ์๋๋ก break
if searchData > midVal: #์
๋ ฅ๋ฐ์ ๋ฐ์ดํฐ๊ฐ ์ค๊ฐ๊ฐ๋ณด๋ค ํด ๋
staIdx = midIdx #์์์ ์ค๊ฐ์ idx๊ฐ
midIdx = (staIdx + endIdx) // 2 #์ค๊ฐ์ ์์๊ณผ ๋ idx๋ฅผ ๋ํ๊ณ 2๋ก ๋๋ ๋ชซ
midVal = datas[midIdx] #์ค๊ฐ์ ๋ฐธ๋ฅ๋ datas์ ๊ตฌํ midIdx๋ฅผ ๋ฃ์ ๊ฐ์ด๋๋ค
print(f'midIdx : {midIdx}')
print(f'midVal : {midVal}')
elif searchData < midVal: #์
๋ ฅ๋ฐ์ ๋ฐ์ดํฐ๊ฐ ์ค๊ฐ๊ฐ๋ณด๋ค ์์ ๋
endIdx = midIdx #๋์ ๊ฐ์ ์ค๊ฐ๊ฐ์ด ๋๋ค
midIdx = (staIdx + endIdx) // 2 #์์๊ฐ๊ณผ ๋์ ๊ฐ์ idx๋ฅผ ๋ํ๊ณ 2๋ก ๋๋ ๋ชซ
midVal = datas[midIdx] # ์ค๊ฐ์ ๋ฐธ๋ฅ๋ datas์ ๊ตฌํ midIdx๋ฅผ ๋ฃ์ ๊ฐ์ด๋ค.
print(f'midIdx : {midIdx}')
print(f'midVal : {midVal}')
elif searchData == midVal: #์
๋ ฅ๋ฐ์ ๋ฐ์ดํฐ์ ์ค๊ฐ๊ฐ์ด ๊ฐ์ ๋
searchResultIdx = midIdx #๋ฐ์ดํฐ์ Idx๋ ์ค๊ฐ๊ฐ์ Idx์ ๊ฐ๋ค
break
print(f'searchResultIdx : {searchResultIdx}')
>>>>
datas : [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
datas length : 11
search data : 4
midIdx : 5
midVal : 6
midIdx : 2
midVal : 3
midIdx : 3
midVal : 4
searchResultIdx : 3
๐ ์์
- ์์ ํฌ๊ณ ์์์ ์ด์ฉํ์ฌ ์์ ์์๋ฅผ ์ ํ๋ ๊ฒ์ ์์๋ผ๊ณ ํ๋ค.
import random
nums = random.sample(range(50, 101), 20) # 50~100 ์ฌ์ด์ ๋์ 20๊ฐ๋ฅผ ๋ฝ์๋
ranks = [0 for i in range (20)] #๊ธธ์ด๊ฐ 20์ด๊ณ ๋ฐ์ดํฐ์ ๊ฐ์ 0์ธ ๋ฆฌ์คํธ๊ฐ ๋ง๋ค์ด์ง
print(f'nums : {nums}')
print(f'ranks : {ranks}')
for idx, num1 in enumerate(nums): #random nums์ idx, num1์ ๋ฝ์์จ๋ค.
for num2 in nums: #์ค์ฒฉ ๋ฐ๋ณต๋ฌธ์ ์ฌ์ฉํ์ฌ num2๋ฅผ ๋ฝ์์จ๋ค. (๊ธฐ์ค์ด๋๋ ์ซ์์ ๋น๊ตํ๊ธฐ ์ํจ)
if num1 < num2: #num2๊ฐ num1๋ณด๋ค ํฌ๋ค๋ฉด (๊ธฐ์ค์ด ๋๋ num1๋ณด๋ค num2๊ฐ ํฌ๋ค๋ฉด)
ranks[idx] += 1 #rank์์ ์๋ ํด๋น idx ์ซ์์ 1์ฉ ๊ณ์ํด์ ๋ํ๋ค
print(f'nums : {nums}')
print(f'ranks : {ranks}')
for idx, num in enumerate(nums): #for๋ฌธ์ ํตํด idx, num์ ์ถ์ถํ๊ณ
print(f'num : {num} \t rank : {ranks[idx] + 1}') #๊ฐ๊ฐ์ ์์์ ์ซ์๋ฅผ ๋์ดํด์ค๋ค
>>>>
nums : [59, 71, 98, 67, 85, 69, 91, 72, 77, 57, 97, 99, 74, 53, 86, 66, 58, 89, 78, 51]
ranks : [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
nums : [59, 71, 98, 67, 85, 69, 91, 72, 77, 57, 97, 99, 74, 53, 86, 66, 58, 89, 78, 51]
ranks : [15, 11, 1, 13, 6, 12, 3, 10, 8, 17, 2, 0, 9, 18, 5, 14, 16, 4, 7, 19]
num : 59 rank : 16
num : 71 rank : 12
num : 98 rank : 2
num : 67 rank : 14
num : 85 rank : 7
num : 69 rank : 13
num : 91 rank : 4
num : 72 rank : 11
num : 77 rank : 9
num : 57 rank : 18
num : 97 rank : 3
num : 99 rank : 1
num : 74 rank : 10
num : 53 rank : 19
num : 86 rank : 6
num : 66 rank : 15
num : 58 rank : 17
num : 89 rank : 5
num : 78 rank : 8
num : 51 rank : 20
๐ ์์ ํธ์ฐจ
#๋ชจ๋์ฝ๋
class RankDeviation:
def __init__(self, mss, ess): #์ค๊ฐ๊ณ ์ฌ, ๊ธฐ๋ง๊ณ ์ฌ score๋ฅผ ๋ฐ๋๋ค
self.midStuScos = mss #์ค๊ฐ๊ณ ์ฌ ์ ์
self.endStuScos = ess #๊ธฐ๋ง๊ณ ์ฌ ์ ์
self.midRanks = [0 for i in range(len(mss))] #์ค๊ฐ๊ณ ์ฌ ์์
self.endRanks = [0 for i in range(len(mss))] #๊ธฐ๋ง๊ณ ์ฌ ์์
self.rankDeviation = [0 for i in range(len(mss))] #ํธ์ฐจ
def setRank(self, ss, rs): #์์๋ฅผ ๊ฒฐ์ ์ง๋๋ค
for idx, sco1 in enumerate(ss):
for sco2 in ss:
if sco1 < sco2:
rs[idx] += 1
def setMidRank(self): #์ค๊ฐ๊ณ ์ฌ ์ฑ์ ๋ญํฌ๋ฅผ setRank์ ๋์ง๋ค
self.setRank(self.midStuScos, self.midRanks)
def getMidRank(self):
return self.midRanks
def setEndRank(self): #๊ธฐ๋ง๊ณ ์ฌ ์ฑ์ ๋ญํฌ๋ฅผ setRank์ ๋์ง๋ค
self.setRank(self.endStuScos, self.endRanks)
def getEndRank(self):
return self.endRanks
def printRankDeviation(self):
for idx, mRank in enumerate(self.midRanks): #์ค๊ฐ๊ณ ์ฌ ์ฑ์ ์ ๊ธฐ์ค์ผ๋ก ์ผ๋๋ค
deviation = mRank - self.endRanks[idx] #ํธ์ฐจ๋ ์ค๊ฐ๊ณ ์ฌ ์ฑ์ - ๊ธฐ๋ง๊ณ ์ฌ ์ฑ์ ์ ์ ๋๊ฐ์ผ๋ก ์์์ค๋ค
if deviation > 0:
deviation = '↑' + str(abs(deviation))
elif deviation < 0:
deviation = '↓' + str(abs(deviation))
else:
deviation = '=' + str(abs(deviation))
print(f'mid_rank : {mRank} \t end_rank : {self.endRanks[idx]} \t Deviation : {deviation}')
#์คํ์ฝ๋
import rankMod as rm
import random
midStuScos = random.sample(range(50, 101), 20)
endStuScos = random.sample(range(50, 101), 20)
rd = rm.RankDeviation(midStuScos, endStuScos)
rd.setMidRank()
print(f'midStuScos : {midStuScos}')
print(f'midRank : {rd.getMidRank()}')
rd.setEndRank()
print(f'endStuScos : {endStuScos}')
print(f'endRank : {rd.getEndRank()}')
rd.printRankDeviation()
>>>>
midStuScos : [86, 67, 59, 84, 76, 51, 62, 74, 66, 70, 77, 75, 95, 60, 69, 53, 61, 78, 94, 97]
midRank : [3, 12, 17, 4, 7, 19, 14, 9, 13, 10, 6, 8, 1, 16, 11, 18, 15, 5, 2, 0]
endStuScos : [99, 92, 96, 50, 57, 78, 77, 79, 80, 52, 87, 70, 65, 95, 60, 55, 88, 81, 94, 56]
endRank : [0, 4, 1, 19, 15, 10, 11, 9, 8, 18, 6, 12, 13, 2, 14, 17, 5, 7, 3, 16]
mid_rank : 3 end_rank : 0 Deviation : ↑3
mid_rank : 12 end_rank : 4 Deviation : ↑8
mid_rank : 17 end_rank : 1 Deviation : ↑16
mid_rank : 4 end_rank : 19 Deviation : ↓15
mid_rank : 7 end_rank : 15 Deviation : ↓8
mid_rank : 19 end_rank : 10 Deviation : ↑9
mid_rank : 14 end_rank : 11 Deviation : ↑3
mid_rank : 9 end_rank : 9 Deviation : =0
mid_rank : 13 end_rank : 8 Deviation : ↑5
mid_rank : 10 end_rank : 18 Deviation : ↓8
mid_rank : 6 end_rank : 6 Deviation : =0
mid_rank : 8 end_rank : 12 Deviation : ↓4
mid_rank : 1 end_rank : 13 Deviation : ↓12
mid_rank : 16 end_rank : 2 Deviation : ↑14
mid_rank : 11 end_rank : 14 Deviation : ↓3
mid_rank : 18 end_rank : 17 Deviation : ↑1
mid_rank : 15 end_rank : 5 Deviation : ↑10
mid_rank : 5 end_rank : 7 Deviation : ↓2
mid_rank : 2 end_rank : 3 Deviation : ↓1
mid_rank : 0 end_rank : 16 Deviation : ↓16
๐ ๋ฒ๋ธ์ ๋ ฌ
- ์ฒ์๋ถํฐ ๋๊น์ง ์ธ์ ํ๋ ์ธ๋ฑ์ค์ ๊ฐ์ ์์ฐจ์ ์ผ๋ก ๋น๊ตํ๋ฉด์ ํฐ ์ซ์๋ฅผ ๊ฐ์ฅ ๋์ผ๋ก ์ฎ๊ธฐ๋ ์๊ณ ๋ฆฌ์ฆ
nums = [10, 2, 7, 21, 0]
print(f'not sorted nums : {nums}')
length = len(nums) - 1
for i in range (length):
#๋ฒ์ฃผ ๋ด์ ์ซ์ ์์์ (๋ง์ง๋ง ๋
ธ๋๋ ์ ํx)
for j in range (length - i):
#์ด๋ฏธ ๊ตํ๋ ๋
ธ๋๋ ๋งจ ๋ค ์ชฝ์ผ๋ก ๋ฐฐ์น๊ฐ ๋์ด์๊ธฐ ๋๋ฌธ์
if nums[j] > nums[j+1]:
#J์ธ๋ฑ์ค์ ์๋ ๊ฐ์ด j+1 ์ธ๋ฑ์ค ๊ฐ๋ณด๋ค ํฌ๋ค๋ฉด
# temp = nums[j]
# nums[j] = nums[j+1]
# nums[j + 1] = temp
nums[j], nums[j+1] = nums[j+1], nums[j]
#์ซ์๋ฅผ ์๋ก ๊ตํํ๋ค (๋ฐ๊พผ๋ค)
print(nums)
print()
print(f'sorted nums : {nums}')
>>>>
not sorted nums : [10, 2, 7, 21, 0]
[2, 10, 7, 21, 0]
[2, 7, 10, 21, 0]
[2, 7, 10, 21, 0]
[2, 7, 10, 0, 21]
[2, 7, 10, 0, 21]
[2, 7, 10, 0, 21]
[2, 7, 0, 10, 21]
[2, 7, 0, 10, 21]
[2, 0, 7, 10, 21]
[0, 2, 7, 10, 21]
sorted nums : [0, 2, 7, 10, 21]
๐ ๋ฒ๋ธ์ ๋ ฌ (์ค์ต)
- ํค ์์ผ๋ก ์ ๋ ฌํด๋ณด๊ธฐ
#๋ชจ๋์ฝ๋
import copy
def bubbleSort(ns, deepCopy=True):
if deepCopy:
cns = copy.copy(ns) #๊น์ ๋ณต์ฌ
else:
cns = ns #์์ ๋ณต์ฌ
length = len(cns) - 1
for i in range(length):
for j in range(length - i):
if cns[j] > cns[j+1]:
cns[j], cns[j+1] = cns[j+1], cns[j]
return cns
#์คํ์ฝ๋
import random as rd
import sortMod as sm
students = []
for i in range(20):
students.append(rd.randint(170, 185))
print(f'students: {students}')
sortedStudents = sm.bubbleSort(students)
print(f'students: {students}')
print(f'sortedStudents: {sortedStudents}')
>>>>
students: [176, 173, 176, 173, 181, 182, 172, 178, 182, 184, 177, 179, 180, 171, 179, 181, 175, 176, 174, 179]
students: [176, 173, 176, 173, 181, 182, 172, 178, 182, 184, 177, 179, 180, 171, 179, 181, 175, 176, 174, 179]
sortedStudents: [171, 172, 173, 173, 174, 175, 176, 176, 176, 177, 178, 179, 179, 179, 180, 181, 181, 182, 182, 184]
๐ ์ฝ์ ์ ๋ ฌ
- ์ ๋ ฌ๋์ด ์๋ ์๋ฃ ๋ฐฐ์ด๊ณผ ๋น๊ตํด์, ์ ๋ ฌ ์์น๋ฅผ ์ฐพ๋๋ค
nums = [5, 10, 2, 1, 0]
#ascending
for i1 in range(1, len(nums)):
i2 = i1 - 1
cNum = nums[i1]
while nums[i2] > cNum and i2 >= 0: #i2์ ๊ฐ์ด ์ด์ ์ ์ ๋ ฌ๋์ด์๋ ์ซ์๋ณด๋ค ํฌ๋ค๋ฉด
nums[i2 + 1] = nums[i2] #๋๊ฐ์ ๊ฐ์ ์นํ
i2 -= 1
nums[i2 + 1] = cNum
print(f'nums:{nums}')
print()
#descending
nums = [0, 5, 2, 10, 1]
for i1 in range(1, len(nums)):
i2 = i1 - 1
cNum = nums[i1]
while nums[i2] < cNum and i2 >= 0:
nums[i2 + 1] = nums[i2]
i2 -= 1
nums[i2 + 1] = cNum
print(f'nums:{nums}')
>>>>
nums:[5, 10, 2, 1, 0]
nums:[2, 5, 10, 1, 0]
nums:[1, 2, 5, 10, 0]
nums:[0, 1, 2, 5, 10]
nums:[5, 0, 2, 10, 1]
nums:[5, 2, 0, 10, 1]
nums:[10, 5, 2, 0, 1]
nums:[10, 5, 2, 1, 0]
๐ ์ฝ์ ์ ๋ ฌ (์ค์ต)
#๋ชจ๋์ฝ๋
class SortNumbers:
def __init__(self, ns, asc=True):
self.nums = ns
self.isAsc = asc
def isAscending(self, flag):
self.isAsc = flag
def setSort(self):
for i1 in range(1, len(self.nums)):
i2 = i1 - 1
cNum = self.nums[i1]
if self.isAsc:
while self.nums[i2] > cNum and i2 >=0:
self.nums[i2 + 1] = self.nums[i2]
i2 -= 1
else:
while self.nums[i2] < cNum and i2 >=0:
self.nums[i2 + 1] = self.nums[i2]
i2 -= 1
self.nums[i2 + 1] = cNum
def getSortedNumbers(self):
return self.nums
def getMinNumber(self):
if self.isAsc:
return self.nums[0]
else:
return self.nums[len(self.nums) - 1]
def getMaxNumber(self):
if self.isAsc:
return self.nums[len(self.nums) - 1]
else:
return self.nums[0]
#์คํ์ฝ๋
import random
import sortMod as sm
nums = random.sample(range(1, 1000), 100)
print(f'not sorted numbers : {nums}')
# ๊ฐ์ฒด ์์ฑ
sn = sm.SortNumbers(nums)
# ์ค๋ฆ์ฐจ์(ascending)
sn.setSort()
sortedNumbers = sn.getSortedNumbers()
print(sortedNumbers)
# ๋ด๋ฆผ์ฐจ์(descending)
sn.isAscending(False)
sn.setSort()
sortedNumbers = sn.getSortedNumbers()
print(sortedNumbers)
# min & max
print(f'min : {sn.getMinNumber()}')
print(f'max : {sn.getMaxNumber()}')
๐ ์ ํ์ ๋ ฌ
- ์ฃผ์ด์ง ๋ฆฌ์คํธ ์ค์ ์ต์๊ฐ์ ์ฐพ์, ๊ทธ ๊ฐ์ ๋งจ ์์ ์์นํ ๊ฐ๊ณผ ๊ต์ฒดํ๋ ๋ฐฉ์์ผ๋ก ์๋ฃ๋ฅผ ์ ๋ ฌ
nums = [4, 2, 5, 1, 3]
print(f'nums : {nums}')
for i in range (len(nums) - 1):
minIdx = i #์ต์๊ฐ์ด ๋ค์ด์๋ index ์ค์
for j in range (i+1, len(nums)):
if nums[minIdx] > nums[j]:
minIdx = j
# tempNum = nums[i]
# nums[i] = nums[minIdx]
# nums[minIdx] = tempNum
nums[i], nums[minIdx] = nums[minIdx], nums[i]
print(f'nums : {nums}')
print(f'final nums : {nums}')
>>>>
nums : [4, 2, 5, 1, 3]
nums : [1, 2, 5, 4, 3]
nums : [1, 2, 5, 4, 3]
nums : [1, 2, 3, 4, 5]
nums : [1, 2, 3, 4, 5]
final nums : [1, 2, 3, 4, 5]
๐ ์ต๋๊ฐ
class MaxAlgorithm:
def __init__(self, ns): #๊ฐ์ฒด ์ด๊ธฐํ
self.nums = ns
self.maxNum = 0
def getMaxNum(self):
self.maxNum = self.nums[0]
for n in self.nums:
if self.maxNum < n:
self.maxNum = n
return self.maxNum
max = MaxAlgorithm([-2, -4, 5, 7, 10, 0, 8, 20, -11])
print(f'max Num : {max.getMaxNum()}')
class MaxAlgorithm:
def __init__(self, cs):
self.chars = cs
self.maxChar = 0
def getMaxchar(self):
self.maxChar = self.chars[0]
for c in self.chars:
if ord(self.maxChar) < ord(c):
self.maxChar = c
return self.maxChar
chars = ['c', 'x', 'Q', 'A', 'e', 'P', 'p']
mc = MaxAlgorithm(chars)
maxChar = mc.getMaxchar()
print(f'maxChar : {maxChar}')
๐ ์ต์๊ฐ
class MinAlgorithm:
def __init__(self, ns):
self.nums = ns
self.minNum = 0
def getMinnum(self):
self.minNum = self.nums[0]
for n in self.nums:
if self.minNum > n:
self.minNum = n
return self.minNum
nums = [-2, -4, 5, 7, 10, 0, 8, 20, -11]
mn = MinAlgorithm(nums)
minNum = mn.getMinnum()
print(f'minNum : {minNum}')
#์์คํค ์ฝ๋ ๊ฐ ์ต์
class MinAlgorithm:
def __init__(self, cs):
self.chars = cs
self.minChar = 0
def getMinChar(self):
self.minChar = self.chars[0]
for c in self.chars:
if ord(self.minChar) > ord(c):
self.minChar = c
return self.minChar
chars = (['c', 'x', 'Q', 'A', 'e', 'P', 'p'])
mc = MinAlgorithm(chars)
minChar = mc.getMinChar()
print(f'minChar : {minChar}')
๐ ์ต๋น๊ฐ
- ๋ฐ์ดํฐ์์ ๋น๋์๊ฐ ๊ฐ์ฅ ๋ง์ ๋ฐ์ดํฐ๋ฅผ ์ต๋น๊ฐ์ด๋ผ๊ณ ํ๋ค.
class MaxAlgorithm:
def __init__(self, ns):
self.nums = ns
self.maxNum = 0
self.maxNumIdx = 0
def setMaxIdxAndNum(self):
self.maxNum = self.nums[0]
self.maxNumIdx = 0
for i, n in enumerate(self.nums):
if self.maxNum < n:
self.maxNum = n
self.maxNumIdx = i
def getMaxNum(self):
return self.maxNum
def getMaxNumIdx(self):
return self.maxNumIdx
nums = [1, 3, 7, 6, 7, 7, 7, 12, 12, 17]
mn = MaxAlgorithm(nums)
mn.setMaxIdxAndNum()
maxNumIdx = mn.getMaxNumIdx()
maxNum = mn.getMaxNum()
print(f'maxNum Idx : {maxNumIdx}')
print(f'maxNum : {maxNum}')
indexes = [0 for i in range(maxNum + 1)]
print(f'indexes : {indexes}')
print(f'indexes length : {len(indexes)}')
for n in nums:
indexes[n] = indexes[n] + 1 #ํด๋น๋๋ indexes์ ์ธ๋ฑ์ค์ +1
print(f'indexes : {indexes}')
maxAgo = MaxAlgorithm(indexes)
maxAgo.setMaxIdxAndNum()
maxNum = maxAgo.getMaxNum()
maxNumIdx = maxAgo.getMaxNumIdx()
print(f'{maxNum}')
print(f'{maxNumIdx}')
>>>>
maxNum Idx : 9
maxNum : 17
indexes : [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
indexes length : 18
indexes : [0, 1, 0, 1, 0, 0, 1, 4, 0, 0, 0, 0, 2, 0, 0, 0, 0, 1]
4
7