# ์ ํ ๊ฒ์
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): # ์
๋ ฅํ ๋ฐ์ดํฐ๊ฐ ๋ฆฌ์คํธ ์์ ์์ ๋
searchResultIdx = -1
break
elif datas[n] == searchData:
searchResultIdx = n
break
n += 1
print(f'searchResultIdx : [{searchResultIdx}]')
# ๋ณด์ด๋ฒ
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
datas.append(searchData) # ์ฐพ์ผ๋ ค๋ ์ซ์๋ฅผ ๋จผ์ ์ถ๊ฐ
n = 0
while True:
if datas[n] == searchData:
if n != len(datas)-1:
searchResultIdx = n
break
n += 1
print(f'datas : {datas}')
print(f'datas length : {len(datas)}')
print(f'searchResultIdx : {searchResultIdx}')
๐ก ๋ฆฌ์คํธ์์ ๊ฐ์ฅ ์์ ์๋ ์ซ์ โ7โ์ ๊ฒ์ํ๊ณ ์์น(์ธ๋ฑ์ค)๋ฅผ ์ถ๋ ฅ
# ๋ฆฌ์คํธ์์ ๊ฐ์ฅ ์์ ์๋ ์ซ์ โ7โ์ ๊ฒ์ํ๊ณ ์์น(์ธ๋ฑ์ค)๋ฅผ ์ถ๋ ฅ
# nums = [4, 7, 10, 2, 4, 7, 0, 2, 7, 3, 9]
#
# searchNumber = int(input('์ซ์ ๊ฒ์ : '))
# searchNumberIndex = -1
# n = 0
# flag = True
# while flag:
# if searchNumber != nums[n]:
# searchNumberIndex = -1
#
# elif searchNumber == nums[n]:
# flag = False
# searchNumberIndex = n
# break
# n += 1
#
# print(f'nums : {nums}')
# print(f'nums length : {len(nums)}')
# print(f'searchNumber : {searchNumber}')
# print(f'searchNumberIndex : {searchNumberIndex}')
nums = [4, 7, 10, 2, 4, 7, 0, 2, 7, 3, 9]
searchNumber = int(input('์ซ์ ๊ฒ์ : '))
searchNumberIndex = -1
nums.append(searchNumber)
n = 0
while True:
if nums[n] == searchNumber:
if n != len(nums)-1:
searchNumberIndex = n
break
n += 1
print(f'nums : {nums}')
print(f'nums length : {len(nums)}')
print(f'searchNumber : {searchNumber}')
print(f'searchNumberIndex : {searchNumberIndex}')
if searchNumberIndex < 0:
print('not search index')
else:
print(f'search index : {searchNumberIndex}')
๐ก ๋ฆฌ์คํธ์์ ์ซ์ โ7โ์ ๋ชจ๋ ๊ฒ์ํ๊ณ ๊ฐ๊ฐ์ ์์น(์ธ๋ฑ์ค)์ ๊ฒ์ ๊ฐ์๋ฅผ ์ถ๋ ฅ
# ๋ฆฌ์คํธ์์ ์ซ์ โ7โ์ ๋ชจ๋ ๊ฒ์ํ๊ณ ๊ฐ๊ฐ์ ์์น(์ธ๋ฑ์ค)์ ๊ฒ์ ๊ฐ์๋ฅผ ์ถ๋ ฅ
nums = [4, 7, 10, 2, 4, 7, 0, 2, 7, 3, 9]
def searchNumber(n) :
searchNumber = int(input('์ซ์ ๊ฒ์ : '))
searchResultIdxs = []
nums.append(searchNumber)
n = 0
while True:
if nums[n] == searchNumber:
if n != len(nums)-1:
searchResultIdxs.append(n)
else:
break
n += 1
return searchResultIdxs
print(f'nums : {nums}')
print(f'nums length : {len(nums)}')
print(f'searchResultIdxs : {searchNumber(searchNumber)}')
print(f'searchResultIdxs length: {len(searchNumber(searchNumber))}')
datas = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
print(f'datas : {datas}')
print(f'data length : {len(datas)}')
searchData = int(input('์ฐพ์ผ๋ ค๋ ์ซ์ ์
๋ ฅ : '))
searchResultIdx = -1
startIdx = 0
endIdx = len(datas) - 1
midIdx = (startIdx + endIdx) // 2 # ๋ชซ
midVal = datas[midIdx]
print(f'midIdx : {midIdx}')
print(f'midVal : {midVal}')
while searchData <= datas[len(datas)-1] and searchData >= datas[0]:
# ๋ฐ์ดํฐ ๋ฒ์ ์์ ์์ด์ผ ๊ฒ์ํ๋ ์๋ฏธ๊ฐ ์์ด์ ์กฐ๊ฑด ์ค์ ํจ
if searchData == datas[len(datas)-1]:
searchResultIdx = len(datas)-1
break
elif searchData > midVal:
startIdx = midIdx
midIdx = (startIdx + endIdx) // 2
midVal = datas[midIdx]
print(f'midIdx : {midIdx}')
print(f'midVal : {midVal}')
elif searchData < midVal:
endIdx = midIdx
midIdx = (startIdx + endIdx) // 2
midVal = datas[midIdx]
print(f'midIdx : {midIdx}')
print(f'midVal : {midVal}')
elif searchData == midVal:
searchResultIdx = midIdx
break
print(f'searchResultIdx : {searchResultIdx}')
๋ฆฌ์คํธ๋ฅผ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ ํ โ7โ์ ๊ฒ์ํ๊ณ ์์น(์ธ๋ฑ์ค)๋ฅผ ์ถ๋ ฅ
# ๋ฆฌ์คํธ๋ฅผ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ ํ โ7โ์ ๊ฒ์ํ๊ณ ์์น(์ธ๋ฑ์ค)๋ฅผ ์ถ๋ ฅ
nums = [4, 10, 22, 5, 0, 17, 7, 11, 9, 61, 88]
nums.sort()
print(f'nums : {nums}')
searchData = int(input('์ฐพ์ผ๋ ค๋ ์ซ์ ์
๋ ฅ : '))
searchResultIdx = -1
startIdx = 0
endIdx = len(nums) -1
midIdx = (startIdx + endIdx) // 2
midVal = nums[midIdx]
while searchData <= nums[(len(nums)-1)] and searchData >= nums[0]:
if searchData == nums[len(nums)-1]:
searchResultIdx = nums[len(nums)-1]
break
elif searchData > midVal:
startIdx = midIdx
midIdx = (startIdx + endIdx) // 2
midVal = nums[midIdx]
print(f'midIdx : {midIdx}')
print(f'midVal : {midVal}')
elif searchData < midVal:
endIdx = midIdx
midIdx = (startIdx + endIdx) // 2
midVal = nums[midIdx]
print(f'midIdx : {midIdx}')
print(f'midVal : {midVal}')
elif searchData == midVal:
searchResultIdx = midIdx
break
print(f'searchResultIdx : {searchResultIdx}')
import random
nums = random.sample(range(50, 100),20)
print(nums)
ranks = [0 for i in range(20)] # โ
print(ranks)
for idx, num1 in enumerate(nums):
for num2 in nums: # ์กฐ๊ฑด์ ๋ง์กฑํ์ง ๋ชปํ๋ฉด nums ๋ค์ ๋ฒํธ์ ๋น๊ต
if num1 < num2:
ranks[idx] += 1
ranks2 = [0 for i in range(20)] # โ
print(ranks)
print()
for idx, num1 in enumerate(nums):
for num2 in nums: # ์กฐ๊ฑด์ ๋ง์กฑํ์ง ๋ชปํ๋ฉด nums ๋ค์ ๋ฒํธ์ ๋น๊ต
if num1 > num2:
ranks2[idx] += 1
print(nums)
print(ranks)
print(ranks2)
for idx, num in enumerate(nums):
print(f'num : {num} \t rank : {ranks[idx]+1}')
print()
for idx, num in enumerate(nums):
print(f'num : {num} \t rank : {ranks2[idx]+1}')
๐ก ํ๊ธ ํ์(20๋ช )๋ค์ ์ค๊ฐ๊ณ ์ฌ์ ๊ธฐ๋ง๊ณ ์ฌ ์ฑ์ ์ ์ด์ฉํด์ ๊ฐ๊ฐ์ ์์๋ฅผ ๊ตฌํ๊ณ , ์ค๊ฐ๊ณ ์ฌ ๋๋น ๊ธฐ๋ง๊ณ ์ฌ ์์ ๋ณํ(ํธ์ฐจ)๋ฅผ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ๋ง๋ค์ด ๋ณด์.(์ํ ์ฑ์ ์ ๋์๋ฅผ ์ด์ฉํ๋ค.)
import random
midStuScos = random.sample(range(50, 100),20)
mid_ranks = [0 for i in range(20)]
endStuScos = random.sample(range(50, 100),20)
end_ranks = [0 for i in range(20)]
# print(midStuScos)
# print(mid_ranks)
# print(endStuScos)
# print(end_ranks)
midSum = 0
midAvg = 0
for idx, n1 in enumerate(midStuScos):
for n2 in midStuScos:
if n1 < n2:
mid_ranks[idx] += 1
#print(mid_ranks)
for idx, n1 in enumerate(endStuScos):
for n2 in endStuScos:
if n1 < n2:
end_ranks[idx] += 1
#print(end_ranks)
deviationRank = [0 for i in range(20)]
for num in range(20):
if mid_ranks[num] > end_ranks[num]:
deviationRank[num] = 'โ'+str(mid_ranks[num] - end_ranks[num])
elif mid_ranks[num] < end_ranks[num]:
deviationRank[num] = 'โ'+str(abs(mid_ranks[num] - end_ranks[num]))
elif mid_ranks[num] == end_ranks[num]:
deviationRank[num] = '=' + str(mid_ranks[num] - end_ranks[num])
#print(deviationRank)
for num in range(len(mid_ranks)):
print(f'mid_rank : {mid_ranks[num]}\t end_rank : {end_ranks[num]}\t'
f' Deviation : {deviationRank[num]}')
print()
# ๋ชจ๋ ์ด์ฉ
# rank ํ์ผ
class RankDeviation:
def __init__(self, mss, ess):
self.midStuScos = mss
self.endStuScos = ess
self.midRanks = [0 for i in range(len(mss))]
self.endRanks = [0 for i in range(len(ess))]
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):
self.setRank(self.midStuScos, self.midRanks)
def getMidRank(self):
return self.midRanks
def setEndRank(self):
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'
f'Deviation : {deviation}')
#------------------------------------------------------------
# ๋ชจ๋ ์ด์ฉ
import random
import rank
midStuScos = random.sample(range(50, 100),20)
endStuScos = random.sample(range(50, 100),20)
rd = rank.RankDeviation(midStuScos, endStuScos)
rd.setMidRank()
print(f'midStuScores : {midStuScos}')
print(f'mid_rank : {rd.getMidRank()}')
rd.setEndRank()
print(f'endStuScores : {endStuScos}')
print(f'end_rank : {rd.getEndRank()}')
rd.printRankDeviation()
nums = [10, 2, 7, 21, 0]
print(f'not sorted nums : {nums}')
length = len(nums) - 1
for i in range(length):
for j in range(length-i):
if nums[j] > nums[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}')
์ ํ๋ ์ด ๋์ด ํ๊ธ์ 20๋ช ์ ์๋ก์ด ํ์๋ค์ด ๋ชจ์๋ค. ํ์๋ค์ ํค ์์๋ก ์ค ์ธ์ ๋ณด์. ํ์๋ค์ ํค๋ random ๋ชจ๋์ ์ด์ฉํด์ 170 ~ 185์ฌ์ด๋ก ์์ฑ
# sortMod ํ์ผ
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
# ์ ํ๋
์ด ๋์ด ํ๊ธ์ 20๋ช
์ ์๋ก์ด ํ์๋ค์ด ๋ชจ์๋ค. ํ์๋ค์ ํค ์์๋ก
# ์ค ์ธ์ ๋ณด์. ํ์๋ค์ ํค๋ random ๋ชจ๋์ ์ด์ฉํด์ 170 ~ 185์ฌ์ด๋ก ์์ฑ
import random
import sortMod
students = []
for i in range(20):
students.append(random.randint(170, 185))
print(f'students : {students}')
sortedStudent = sortMod.bubbleSort(students)
print(f'students : {students}')
print(f'students : {sortedStudent}')
nums = [5, 10, 2, 1, 0]
# accending
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}')
#decending
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}')
๐ก 1๋ถํฐ 1000๊น์ง์ ๋์ 100๊ฐ๋ฅผ ์์ฑํ๊ณ , ๋ค์์ ์๊ตฌ ์ฌํญ์ ๋ง์กฑํ๋ ๋ชจ๋์ ์์ฑ
# setMod2 ํ์ผ
class sortNumbers:
def __init__(self, ns, asc = True):
self.nums = ns
self.isAsc = asc
def isAcending(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 getSortedNumber(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]
# 1๋ถํฐ 1000๊น์ง์ ๋์ 100๊ฐ๋ฅผ ์์ฑํ๊ณ , ๋ค์์ ์๊ตฌ ์ฌํญ์ ๋ง์กฑํ๋ ๋ชจ๋์ ์์ฑ
import random
import sortMod2
nums = random.sample(range(1, 1000),100)
print(f'not sorted numbers : {nums}')
#๊ฐ์ฒด ์์ฑ
sn = sortMod2.sortNumbers(nums)
# ์ค๋ฆ์ฐจ์(ascending)
sn.setSort()
sortedNumbers = sn.getSortedNumber()
print(f'sorted numbers by ASC : {sortedNumbers}')
# ๋ด๋ฆผ์ฐจ์(descending)
sn.isAcending(False)
sn.setSort()
sortedNumbers = sn.getSortedNumber()
print(f'sorted numbers by DESC : {sortedNumbers}')
# ์ต์๊ฐ๊ณผ ์ต๋๊ฐ
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):
# ์ฒซ ๊ธฐ์ค์ด ๋ ์ซ์๋ ๊ธธ์ด - 1, ๋ง์ง๋ง ์ซ์๊น์ง ๊ฐ์ ๋ ์ด๋ฏธ ์์ ๋ค ์ ๋ ฌ์ด ๋์ด ์์ผ๋๊น
minidx = i
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}')
๐ก ์ ํ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ ์ด์ฉํด์ ํ์ 20๋ช ์ ์ํ ์ ์๋ฅผ ์ค๋ฆ์ฐจ์๊ณผ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌํ๋ ๋ชจ๋์ ์์ฑ. ์ํ ์ ์๋ 50๋ถํฐ 100๊น์ง๋ก ํ๋ค
# select_sortMod ํ์ผ
class SortNumber:
def __init__(self, ns, asc = True):
self.nums = ns
self.isAsc = asc
def isAcending(self, flag):
self.isAsc = flag
def setSort(self):
for i in range(len(self.nums)-1):
minIdx = i
if self.isAsc:
for j in range(i+1, len(self.nums)):
if self.nums[minIdx] > self.nums[j]:
minIdx = j
self.nums[i], self.nums[minIdx] = self.nums[minIdx],self.nums[i]
else:
for j in range(i + 1, len(self.nums)):
if self.nums[minIdx] < self.nums[j]:
minIdx = j
self.nums[i], self.nums[minIdx] = self.nums[minIdx],self.nums[i]
def getSortNumbers(self):
if self.isAsc:
self.setSort()
return self.nums
else:
self.setSort()
return self.nums
# ์ ํ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ ์ด์ฉํด์ ํ์ 20๋ช
์ ์ํ ์ ์๋ฅผ ์ค๋ฆ์ฐจ์๊ณผ ๋ด๋ฆผ์ฐจ์์ผ๋ก
# ์ ๋ ฌํ๋ ๋ชจ๋์ ๋ง๋ค์ด๋ณด์. ์ํ ์ ์๋ 50๋ถํฐ 100๊น์ง๋ก ํ๋ค
import random
import select_sortMod
import copy
scores = random.sample(range(50, 100), 20)
print(f'not sorted scores : {scores}')
print(f'scores length : {len(scores)}')
print()
sc = select_sortMod.SortNumber(copy.copy(scores)) #โ
โ
โ
๋ณต์ฌ๋ ๋ฆฌ์คํธ๋ก ์ ๋ ฌ
print(f'not sorted scores : {scores}')
sc.isAcending(True)
print(f'result(ASC) : {sc.getSortNumbers()}')
print()
print(f'not sorted scores : {scores}')
sc.isAcending(False)
print(f'result(DESC) : {sc.getSortNumbers()}')
class MaxAlgorithm:
def __init__(self, ns):
self.nums = ns
self.maxNum = 0
def getMaxNum(self):
self.maxNum = self.nums[0] # ์ฒ์์ max๊ฐ์ ๋งจ ์์ ๊ฐ ๋ถ์ฌ
for n in self.nums:
if self.maxNum < n:
self.maxNum = n
return self.maxNum
ma = MaxAlgorithm([-2, -4, 5, 7, 10, 0, 8, 20, -11])
maxNum = ma.getMaxNum()
print(f'maxNum : {maxNum}')
๋ฆฌ์คํธ์์ ์์คํค์ฝ๋๊ฐ ๊ฐ์ฅ ํฐ ๊ฐ์ ์ฐพ๋ ์๊ณ ๋ฆฌ์ฆ์ ์์ฑ
# ๋ฆฌ์คํธ์์ ์์คํค์ฝ๋๊ฐ ๊ฐ์ฅ ํฐ ๊ฐ์ ์ฐพ๋ ์๊ณ ๋ฆฌ์ฆ์ ์์ฑ
class MaxAlgorithm:
def __init__(self, chars):
self.chars = chars
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
numbers = [-2, -4, 5, 7, 10, 0, 8, 20, -11]
ma = MinAlgorithm(numbers)
minNumber = ma.getMinNum()
print(f'minNum : {minNumber}')
๋ฆฌ์คํธ์์ ์์คํค์ฝ๋๊ฐ ๊ฐ์ฅ ์์ ๊ฐ์ ์ฐพ๋ ์๊ณ ๋ฆฌ์ฆ์ ์์ฑ
# ๋ฆฌ์คํธ์์ ์์คํค์ฝ๋๊ฐ ๊ฐ์ฅ ์์ ๊ฐ์ ์ฐพ๋ ์๊ณ ๋ฆฌ์ฆ์ ์์ฑ
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']
ma = MinAlgorithm(chars)
minChar = ma.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]
maxAlo = MaxAlgorithm(nums)
maxAlo.setMaxIdxAndNum()
maxNum = maxAlo.getMaxNum()
print(f'maxNum : {maxNum}')
indexes = [0 for i in range(maxNum+1)]
print(f'indexes : {indexes}')
print(f'index length : {len(indexes)}')
for n in nums:
indexes[n] = indexes[n]+1 # โ
โ
โ
print(f'indexes : {indexes}')
maxAlo = MaxAlgorithm(indexes)
maxAlo.setMaxIdxAndNum()
maxNum = maxAlo.getMaxNum()
maxNumIdx = maxAlo.getMaxNumIdx()
print(f'maxNum : {maxNum}')
print(f'maxNumIdx : {maxNumIdx}')
print(f'์ฆ, {maxNumIdx}์ ๋น๋์๊ฐ {maxNumIdx}๋ก ๊ฐ์ฅ ๋๋ค')
๐ก ์ต๋น๊ฐ ์๊ณ ๋ฆฌ์ฆ์ ์ด์ฉํด์ ํ์ 100๋ช ์ ์ ์ ๋ถํฌ๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ๋ํ๋ด๊ธฐ
# ์ต๋น๊ฐ ์๊ณ ๋ฆฌ์ฆ์ ์ด์ฉํด์ ํ์ 100๋ช
์ ์ ์ ๋ถํฌ๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ๋ํ๋ด๊ธฐ
import copy
import random
scores = []
for i in range(100): # โ
โ
โ
โ
โ
rn = random.randint(71, 100)
if rn != 100 :
rn = rn - (rn % 5)
scores.append(rn)
class Algorithm:
def __init__(self, ns):
self.nums = ns
self.maxNum = 0
self.maxNumIdx = 0
def setMaxNumAndMaxNumIdx(self):
self.maxNum = self.nums[0]
self.maxNumIdx = 0
def getMaxNumAndMaxNumIdx(self):
for i, n in enumerate(self.nums):
if n > self.maxNum:
self.maxNum = n
self.maxNumIdx = i
def getMaxNum(self):
return self.maxNum
def getMaxNumIdx(self):
return self.maxNumIdx
def setSortMinNum(self):
self.sortMinNum = self.nums[0]
def sortNum(self):
for i in range(len(self.nums)-1):
for j in range(len(self.nums)-1-i):
if self.nums[j] < self.nums[j+1]:
self.nums[j], self.nums[j+1] = self.nums[j+1],self.nums[j]
print(f'scores : {scores}')
sc = Algorithm(scores)
sc.setMaxNumAndMaxNumIdx()
sc.getMaxNumAndMaxNumIdx()
maxNum = sc.getMaxNum()
maxNumIdx = sc.getMaxNumIdx()
print(f'maxNum : {maxNum}')
print(f'maxNumIdx : {maxNumIdx}')
# ์ธ๋ฑ์ค ๋ฆฌ์คํธ ์์ฑ
index = [0 for i in range(maxNum+1)]
# ์ธ๋ฑ์ค ๋ฆฌ์คํธ์ ๋น๋ ์ ์ฅ
for sc in scores:
index[sc] = index[sc] + 1
print(f'index : {index}')
#####๋ด๊ฐ ํ ๋ถ๋ถ#####
# index2 = []
# for idx in index:
# if idx != 0:
# index2.append(idx)
# print(f'index2 : {index2}')
#
# idx2 = Algorithm(index2)
# idx2.setSortMinNum()
# idx2.sortNum()
# print(f'index2 : {index2}')
#
# n = 1
# for idx2 in index2:
# for idx, num in enumerate(index):
# if idx2 == num:
# print(f'{n}. {idx}๋น๋์ : {num}\t', end='')
# print('+'*num)
# n += 1
#####๋ด๊ฐ ํ ๋ถ๋ถ#####
n = 1
while True:
maxAlo = Algorithm(index)
maxAlo.setMaxNumAndMaxNumIdx()
maxAlo.getMaxNumAndMaxNumIdx()
maxNum = maxAlo.getMaxNum()
maxNumIdx = maxAlo.getMaxNumIdx()
if maxNum == 0:
break
print(f'{n}. {maxNumIdx} ๋น๋์ : {maxNum}\t\t', end='' )
print('+'*maxNum)
index[maxNumIdx] = 0
n += 1
import random
nums = random.sample(range(0, 50), 20)
print(f'nums : {nums}')
inputNumber = int(input('input number : '))
print(f'inputNumber : {inputNumber}')
nearNum = 0
diffNum = 50 # ์ต์๊ฐ๊ณผ ์ต๋๊ฐ์ ์ฐจ์ด
for n in nums:
absNumber = abs(n - inputNumber)
#print(f'absNumber : {absNumber}')
if absNumber < diffNum:
diffNum = absNumber
nearNum = n
print(f'nearNumber : {nearNum}')
๊ทผ์ฟ๊ฐ ์๊ณ ๋ฆฌ์ฆ์ ์ด์ฉํด์ ์ํ ์ ์๋ฅผ ์ ๋ ฅํ๋ฉด ํ์ ์ด ์ถ๋ ฅ๋๋ ํ๋ก๊ทธ๋จ์ ์์ฑ
ํ๊ท ์ ์์ ๋ฐ๋ฅธ ํ์ ๊ธฐ์ค ์ ์๋ ๋ค์๊ณผ ๊ฐ๋ค.
# near ํ์ผ
def getNearNum(an):
baseScores = [95, 85, 75, 65, 55]
nearNum = 0
minNum = 100
for n in baseScores:
absNum = abs(n - an)
if absNum < minNum:
minNum = absNum
nearNum = n
if nearNum == 95:
return 'A'
elif nearNum == 85:
return 'B'
elif nearNum == 75:
return 'C'
elif nearNum == 65:
return 'D'
elif nearNum <= 55:
return 'E'
# ๊ทผ์ฟ๊ฐ ์๊ณ ๋ฆฌ์ฆ์ ์ด์ฉํด์ ์ํ ์ ์๋ฅผ ์
๋ ฅํ๋ฉด ํ์ ์ด ์ถ๋ ฅ๋๋ ํ๋ก๊ทธ๋จ์ ์์ฑ
# ํ๊ท ์ ์์ ๋ฐ๋ฅธ ํ์ ๊ธฐ์ค ์ ์๋ ๋ค์๊ณผ ๊ฐ๋ค.
import near
scores = []
kor = int(input('input kor score : '))
scores.append(kor)
eng = int(input('input eng score : '))
scores.append(eng)
mat = int(input('input mat score : '))
scores.append(mat)
sci = int(input('input sci score : '))
scores.append(sci)
his = int(input('input his score : '))
scores.append(his)
totalScore = sum(scores)
print(f'totalScore : {totalScore}')
avgScore = totalScore / len(scores)
print(f'avgScore : {avgScore}')
grade = near.getNearNum(avgScore)
print(f'grade : {grade}')
import random
nums = random.sample(range(0, 100),100)
print(f'nums : {nums}')
total = 0
for n in nums:
total += n
average = total / len(nums)
print(f'total : {total}, average : {average}')
# 50 ์ด์ 90์ดํ ์๋ค์ ํ๊ท
import random
nums = random.sample(range(0, 100),30)
print(f'nums : {nums}')
total = 0
targetNums = []
for n in nums:
if n >= 50 and n <= 90:
total += n
targetNums.append(n)
average = total / len(targetNums)
print(f'total : {total}, average : {round(average,2)}')
# ์ ์๋ค์ ํ๊ท
nums = [4, 5.12, 0, 5, 7.34, 9.1, 9, 3, 3.159, 1, 11, 12.789]
print(f'nums : {nums}')
targetNums = []
total = 0
for n in nums:
if n - int(n) == 0:
targetNums.append(n)
total += n
average = total / len(targetNums)
print(f'total : {total}, average : {round(average,2)}')
# ์ค์๋ค์ ํ๊ท
nums = [4, 5.12, 0, 5, 7.34, 9.1, 9, 3, 3.159, 1, 11, 12.789]
print(f'nums : {nums}')
targetNums = []
total = 0
for n in nums:
if n - int(n) != 0:
targetNums.append(n)
total += n
print(f'nums : {targetNums}')
average = total / len(targetNums)
print(f'total : {total}, average : {round(average,2)}')
๋ค์์ ์ด๋ค ์ฒด์กฐ์ ์์ ์ ์์ด๋ค.ํ๊ท ์ ๊ตฌํ๊ณ ์์๋ฅผ ์ ํ๋ ์๊ณ ๋ฆฌ์ฆ์ ์์ฑ
#near2 ํ์ผ
class Top5Players:
def __init__(self, cs, ns):
self.currentScores = cs
self.newScore = ns
def setAlignScore(self):
nearIdx = 0
nearScore = 0
minNum = 10
for i, score in enumerate(self.currentScores):
absNums = abs(self.newScore - score)
if absNums < minNum:
minNum = absNums
nearIdx = i
nearScore = score
if self.newScore >= self.currentScores[nearIdx]:
for i in range(len(self.currentScores)-1, nearIdx, -1): # โ
โ
โ
โ
โ
self.currentScores[i] = self.currentScores[i-1] # ex) 5๋ฒ์งธ์๋ 4๋ฒ ๊ฐ์ด ๋ค์ด์ค๊ณ , 4๋ฒ์งธ์๋ 3๋ฒ ๊ฐ์ด ๋ค์ด์ค๊ณ ...
self.currentScores[nearIdx] = self.newScore # ์๋ก์ด ๊ฐ์ ๊ทผ์ฌ๊ฐ ์์น์
else:
for i in range(len(self.currentScores)-1, nearIdx+1, -1): # โ
โ
โ
โ
โ
self.currentScores[i] = self.currentScores[i-1] # ex) 5๋ฒ์งธ์๋ 4๋ฒ ๊ฐ์ด ๋ค์ด์ค๊ณ , 4๋ฒ์งธ์๋ 3๋ฒ ๊ฐ์ด ๋ค์ด์ค๊ณ ...
self.currentScores[nearIdx] = self.newScore # ์๋ก์ด ๊ฐ์ ๊ทผ์ฌ๊ฐ ๋ค์ ๋ฐฐ์
def getFinalTop5Scores(self):
return self.currentScores
# ๋ค์์ ์ด๋ค ์ฒด์กฐ์ ์์ ์ ์์ด๋ค.ํ๊ท ์ ๊ตฌํ๊ณ ์์๋ฅผ ์ ํ๋ ์๊ณ ๋ฆฌ์ฆ์ ์์ฑ
import near2
scores = [8.9, 7.6, 8.2, 9.1, 8.8, 8.1, 7.9, 9.4, 7.2, 8.7]
finalScores = [9.12, 8.95, 8.12, 7.90, 7.88]
total = 0
for sc in scores:
total += sc
average = total / len(scores)
print(f'total : {total}, average : {round(average,2)}')
tp = near2.Top5Players(finalScores, average)
tp.setAlignScore()
tp.getFinalTop5Scores()
print('์ต์ข
์ ์ฒด ์์')
print(f'top5PlayerScores : {tp.getFinalTop5Scores()}')
# ๋ฐ๋ณต๋ฌธ ๋์ ์ฌ๊ท ํจ์๋ฅผ ์ด์ฉํ ์
def recusion(num):
if num > 0:
print('*'*num)
return recusion(num - 1)
else:
return 1
recusion(10)
# ์ฌ๊ท ํจ์๋ฅผ ์ด์ฉํ ํฉํ ๋ฆฌ์ผ ๊ตฌํ๊ธฐ
def factorial(num):
if num > 0:
return num * factorial(num - 1)
else:
return 1
print(f'factorial : {factorial(10)}')
์ฌ๊ท ์๊ณ ๋ฆฌ์ฆ์ ์ด์ฉํ ์ต๋ ๊ณต์ฝ์ ๊ณ์ฐ
์ ํด๋ฆฌ๋ ํธ์ ๋ฒ
โข ๋ ์์ฐ์ n1, n2์ ๋ํ์ฌ (n1 > n2) n1๋ฅผ n2๋ก ๋๋ ๋๋จธ์ง๋ฅผ r์ด๋ผ๊ณ ํ ๋,
โข n1๊ณผ n2์ ์ต๋๊ณต์ฝ์๋ n2์ r์ ์ต๋๊ณต์ฝ์์ ๊ฐ๋ค
# ์ฌ๊ท ์๊ณ ๋ฆฌ์ฆ์ ์ด์ฉํ ์ต๋ ๊ณต์ฝ์ ๊ณ์ฐ
# ์ ํด๋ฆฌ๋ ํธ์ ๋ฒ
# โข ๋ ์์ฐ์ n1, n2์ ๋ํ์ฌ (n1 > n2) n1๋ฅผ n2๋ก ๋๋ ๋๋จธ์ง๋ฅผ r์ด๋ผ๊ณ ํ ๋,
# โข n1๊ณผ n2์ ์ต๋๊ณต์ฝ์๋ n2์ r์ ์ต๋๊ณต์ฝ์์ ๊ฐ๋ค
def greatestCommonDevide(n1, n2):
maxNum = 0
for i in range(1, (n1 + 1)):
if n1 % i == 0 and n2 % i == 0:
maxNum = i
return maxNum
print(f'greatestCommonDevide(82, 32) : {greatestCommonDevide(82, 32)}')
print(f'greatestCommonDevide(96, 40) : {greatestCommonDevide(96, 40)}')
def gcd(n1, n2):
if n1 % n2 == 0:
return n2
else:
return gcd(n2,n1 % n2)
print(f'gcd(82, 32) : {gcd(82, 32)}')
print(f'gcd(96, 40) : {gcd(96, 40)}')
ํ์ด์ฌ์ ์ด์ฉํด์ ํ๋ ธ์ด์ ํ ๊ฒ์ ์งํ ๊ณผ์ ์ ์ถ๋ ฅ
โข ํ ๋ฒ์ ํ๊ฐ์ ์ํ๋ง ์ฎ๊ธธ ์ ์๋ค.
โข ํฐ ์ํ์ด ์์ ์ํ ์์ ์์ด์๋ ์ ๋๋ค
# ํ์ด์ฌ์ ์ด์ฉํด์ ํ๋
ธ์ด์ ํ ๊ฒ์ ์งํ ๊ณผ์ ์ ์ถ๋ ฅ
# โข ํ ๋ฒ์ ํ๊ฐ์ ์ํ๋ง ์ฎ๊ธธ ์ ์๋ค.
# โข ํฐ ์ํ์ด ์์ ์ํ ์์ ์์ด์๋ ์ ๋๋ค
# ์ํ ๊ฐ์, ์ถ๋ฐ ๊ธฐ๋ฅ, ๋์ฐฉ ๊ธฐ๋ฅ, ๊ฒฝ์ ๊ธฐ๋ฑ
def moveDisc(discCnt, fromBar, toBar, viaBar):
# ์ํ๊ฐ์, ์ถ๋ฐ ๊ธฐ๋ฅ, ๋์ฐฉ ๊ธฐ๋ฅ, ๊ฒฝ์ ๊ธฐ๋ฅ
if discCnt == 1:
print(f'{discCnt} disc : {fromBar}์์ {toBar}(์ผ)๋ก ์ด๋!')
else:
# (discCnt - 1) ๊ฐ๋ค์ ๊ฒฝ์ ๊ธฐ๋ฅ์ผ๋ก ์ด๋
moveDisc(discCnt - 1, fromBar, viaBar, toBar)
# discCnt๋ฅผ ๋ชฉ์ ๊ธฐ๋ฅ์ผ๋ก ์ด๋
print(f'{discCnt} disc : {fromBar}์์ {toBar}(์ผ)๋ก ์ด๋!')
# (discCnt - 1) ๊ฐ๋ค์ ๊ฒฝ์ฐ ๋์ฐฉ ๊ธฐ๋ฅ์ผ๋ก ์ด๋
moveDisc(discCnt - 1, viaBar, toBar, fromBar)
moveDisc(3, 1, 3, 2)
nums = [8, 1, 4, 3, 2, 5, 10, 6]
def mSort(ns):
if len(ns) < 2:
return ns
midIdx = len(ns) // 2
leftNums = mSort(ns[0:midIdx])
rightNums = mSort(ns[midIdx:len(ns)])
mergeNums = []
leftIdx = 0; rightIdx = 0
while leftIdx < len(leftNums) and rightIdx < len(rightNums): # ์ผ์ชฝ ๋ฆฌ์คํธ์ ์ค๋ฅธ์ชฝ ๋ฆฌ์คํธ ๋น๊ต,
if leftNums[leftIdx] < rightNums[rightIdx]:
mergeNums.append(leftNums[leftIdx])
leftIdx += 1 # ์ผ์ชฝ ๋ฆฌ์คํธ์ ์ธ๋ฑ์ค +1
else:
mergeNums.append(rightNums[rightIdx])
rightIdx += 1
mergeNums = mergeNums + leftNums[leftIdx:]
mergeNums = mergeNums + rightNums[rightIdx:]
return mergeNums # ์ค๋ฅธ์ชฝ ๋ฆฌ์คํธ์ ์ธ๋ฑ์ค +1
nums = [8, 1, 4, 3, 2, 5, 10, 6]
print(f'mSort : {mSort(nums)}')
๐ก 1๋ถํฐ 100๊น์ง์ ๋์ 10๊ฐ๋ฅผ ์์ฑํ๊ณ , ๋ค์์ ์๊ตฌ ์ฌํญ์ ๋ง์กฑํ๋ ๋ชจ๋์ ์์ฑ
์๊ตฌ ์ฌํญ1) ๋ณํฉ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ ์ด์ฉํ ๋์ ์ ๋ ฌ ๋ชจ๋ ๊ตฌํ
์๊ตฌ ์ฌํญ2) ์์ ๋ชจ๋์ ์ค๋ฆ์ฐจ์๊ณผ ๋ด๋ฆผ์ฐจ์์ ์ ํํ ์ ์๋ ์ต์ ์ถ๊ฐ
# sortMod3 ํ์ผ
def mSort(ns, asc = True):
if len(ns) < 2:
return ns
midIdx = len(ns) // 2
leftNums = mSort(ns[0:midIdx], asc=asc)
# ์ฌ๊ท์ ์ผ๋ก ํธ์ถ๋๋ ๊ณณ์๋ ์ต์
์ ๋ฃ์ด์ฃผ์ด์ผ ๋์ผํ๊ฒ ์ ์ฉ๋จ โ
โ
โ
โ
โ
rightNums = mSort(ns[midIdx:len(ns)],asc=asc)
mergeNums = []
leftIdx = 0; rightIdx = 0
while leftIdx < len(leftNums) and rightIdx < len(rightNums):
if asc:
if leftNums[leftIdx] < rightNums[rightIdx]:
mergeNums.append(leftNums[leftIdx])
leftIdx += 1
else:
mergeNums.append(rightNums[rightIdx])
rightIdx += 1
else:
if leftNums[leftIdx] > rightNums[rightIdx]:
mergeNums.append(leftNums[leftIdx])
leftIdx += 1
else:
mergeNums.append(rightNums[rightIdx])
rightIdx += 1
mergeNums = mergeNums + leftNums[leftIdx:]
mergeNums = mergeNums + rightNums[rightIdx:]
return mergeNums
# 1๋ถํฐ 100๊น์ง์ ๋์ 10๊ฐ๋ฅผ ์์ฑํ๊ณ , ๋ค์์ ์๊ตฌ ์ฌํญ์ ๋ง์กฑํ๋ ๋ชจ๋์ ์์ฑ
# ์๊ตฌ ์ฌํญ1) ๋ณํฉ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ ์ด์ฉํ ๋์ ์ ๋ ฌ ๋ชจ๋ ๊ตฌํ
# ์๊ตฌ ์ฌํญ2) ์์ ๋ชจ๋์ ์ค๋ฆ์ฐจ์๊ณผ ๋ด๋ฆผ์ฐจ์์ ์ ํํ ์ ์๋ ์ต์
์ถ๊ฐ
import random as rd
import sortMod3 as sm
rNums = rd.sample(range(1, 101), 10)
print(f'not sorted rNums : {rNums}')
print(f'sorted rNums ASC : {sm.mSort(rNums)}')
print(f'sorted rNums DESC : {sm.mSort(rNums, asc=False)}')
def qSort(ns):
if len(ns) < 2:
return ns
midIdx = len(ns) // 2
midVal = ns[midIdx]
smallNums = []; sameNums = []; bigNums=[]
for n in ns:
if n < midVal:
smallNums.append(n)
elif n == midVal:
sameNums.append(n)
else:
bigNums.append(n)
return qSort(smallNums) + sameNums + qSort(bigNums)
nums = [8, 1, 4, 3, 2, 5, 4, 70, 6, 8]
print(qSort(nums))
1๋ถํฐ 100๊น์ง์ ๋์ 10๊ฐ๋ฅผ ์์ฑํ๊ณ , ๋ค์์ ์๊ตฌ ์ฌํญ์ ๋ง์กฑํ๋ ๋ชจ๋์ ์์ฑ
์๊ตฌ ์ฌํญ1) ํต์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ ์ด์ฉํ ๋์ ์ ๋ ฌ ๋ชจ๋ ๊ตฌํ
์๊ตฌ ์ฌํญ2) ์์ ๋ชจ๋์ ์ค๋ฆ์ฐจ์๊ณผ ๋ด๋ฆผ์ฐจ์์ ์ ํํ ์ ์๋ ์ต์ ์ถ๊ฐ
# qSort ํ์ผ
def qSort(ns, asc = True):
if len(ns) < 2:
return ns
midIdx = len(ns) // 2
midVal = ns[midIdx]
smallNums = []; sameNums = []; bigNums = []
for n in ns:
if midVal > n:
smallNums.append(n)
elif midVal == n:
sameNums.append(n)
else:
bigNums.append(n)
if asc:
return qSort(smallNums) + sameNums + qSort(bigNums)
else:
return qSort(bigNums, asc=False) + sameNums + qSort(smallNums, asc=False)
# 1๋ถํฐ 100๊น์ง์ ๋์ 10๊ฐ๋ฅผ ์์ฑํ๊ณ , ๋ค์์ ์๊ตฌ ์ฌํญ์ ๋ง์กฑํ๋ ๋ชจ๋์ ์์ฑ
# ์๊ตฌ ์ฌํญ1) ํต์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ ์ด์ฉํ ๋์ ์ ๋ ฌ ๋ชจ๋ ๊ตฌํ
# ์๊ตฌ ์ฌํญ2) ์์ ๋ชจ๋์ ์ค๋ฆ์ฐจ์๊ณผ ๋ด๋ฆผ์ฐจ์์ ์ ํํ ์ ์๋ ์ต์
์ถ๊ฐ
import qSort
import copy
import random
nums = random.sample(range(1, 101),10)
print(f'not sorted rNums : {nums}')
rNumsASC = copy.copy(nums)
print(f'sorted rNums ASC : {qSort.qSort(rNumsASC)}')
rNumsDESC = copy.copy(nums)
print(f'sorted rNums DESC : {qSort.qSort(rNumsDESC,asc=False)}')
๐ป ์ถ์ฒ : ์ ๋ก๋ฒ ์ด์ค ๋ฐ์ดํฐ ์ทจ์ ์ค์ฟจ