numbers = [2, 22, 7, 8, 9, 2, 7, 3, 5, 2, 7, 1, 3]
print(f'numbers: {numbers}')
# 아이템을 삭제하면 인덱스가 줄어드는 것 고려하기
idx = 0
while True:
# 무한루프 방지
if idx >= len(numbers):
break
if numbers.count(numbers[idx]) >= 2:
numbers.remove(numbers[idx])
continue
idx += 1
print(f'result: {numbers}')
>>>
numbers: [2, 22, 7, 8, 9, 2, 7, 3, 5, 2, 7, 1, 3]
result: [22, 8, 9, 5, 2, 7, 1, 3]
# 4개의 숫자 중 서로 다른 숫자 3개를 선택
numbers = [4, 6, 7, 9]
result = []
for num in numbers: # 4
for num2 in numbers: # 4 pass
if num == num2: continue
for num3 in numbers: # 4, 6 pass
if num == num3 or num2 == num3: continue
result.append([num, num2, num3])
print(f'경우의 수: {len(result)}개')
print(result)
>>>
경우의 수: 24개
[[4, 6, 7], [4, 6, 9], [4, 7, 6], [4, 7, 9], [4, 9, 6], [4, 9, 7], ...
tuple1 = (1, 3, 2, 6, 12, 5, 7, 8)
tuple2 = (0, 5, 2, 9, 8, 6, 17, 3)
union = list(tuple1)
intersection = []
for num in tuple2:
if num not in tuple1:
union.append(num)
else:
# 중복된다 = 교집합
intersection.append(num)
union.sort()
intersection.sort()
print(f'합집합: {union}')
print(f'교집합: {intersection}')
>>>
합집합: [0, 1, 2, 3, 5, 6, 7, 8, 9, 12, 17]
교집합: [2, 3, 5, 6, 8]
scores = ({'kor': 92}, {'eng': 86})
for score in scores:
for key in score.keys():
if score[key] >= 90:
score[key] = 'A'
else:
score[key] = 'B'
print(scores)
>>>
({'kor': 'A'}, {'eng': 'B'})
while문 내용을 조금씩 바꾸면서 curIdx, nextIdx의 변화를 확인해 봤다.
알고리즘을 배우고 나서 다시 풀어볼 생각이다.
fruits = ({'수박': 8}, {'포도': 13}, {'참외': 12},
{'사과': 17}, {'자두': 19}, {'자몽': 15})
fruits = list(fruits)
curIdx = 0
nextIdx = 1
endIdx = len(fruits) - 1
while True:
curDic = fruits[curIdx]
nextDic = fruits[nextIdx]
curDicCnt = list(curDic.values())[0]
nextDicCnt = list(nextDic.values())[0]
if curDicCnt > nextDicCnt:
fruits.insert(curIdx, fruits.pop(nextIdx))
nextIdx += 1
if nextIdx > endIdx:
curIdx += 1
nextIdx = curIdx + 1
if curIdx == len(fruits) - 1:
break
fruits = tuple(fruits)
print(f'sorted: {fruits}')
>>>
sorted: ({'수박': 8}, {'참외': 12}, {'포도': 13},
{'자몽': 15}, {'사과': 17}, {'자두': 19})
studentCnt = ({'1반': 18}, {'2반': 21}, {'3반': 20}, {'4반': 19}, {'5반': 22},
{'6반': 20}, {'7반': 23}, {'8반': 17})
total = 0
minClass = ''; minCnt = 0
maxClass = ''; maxCnt = 0
deviation = []
# 평균, 최솟값, 최댓값 구하기
for idx, dic in enumerate(studentCnt):
for key, value in dic.items():
total += value
if maxCnt < value:
maxCnt = value
maxClass = key
if minCnt == 0 or minCnt > value:
minCnt = value
minClass = key
# 편차 구하기
avg = int(total / len(studentCnt))
for idx, dic in enumerate(studentCnt):
for key, value in dic.items():
deviation.append({key: (value - avg)})
print(f'전체 학생 수 : {total}명')
print(f'평균 학생 수: {avg}명')
print(f'학생 수가 가장 적은 학급: {minClass}({minCnt}명)')
print(f'학생 수가 가장 많은 학급: {maxClass}({maxCnt}명)')
print(f'학급별 학생 편차: {deviation}')
>>>
전체 학생 수 : 160명
평균 학생 수: 20명
학생 수가 가장 적은 학급: 8반(17명)
학생 수가 가장 많은 학급: 7반(23명)
학급별 학생 편차: [{'1반': -2}, {'2반': 1}, {'3반': 0}, {'4반': -1}, {'5반':
2}, {'6반': 0}, {'7반': 3}, {'8반': -3}]
⭐split()
text = '파이썬은 1991년 프로그래머인 귀도 반 로섬이 발표한 고급 프로그래밍 언어이다.'
# split(): 분리된 문자를 리스트로 반환
splitList = text.split()
dic = {}
for i in range(len(splitList)):
dic[i] = splitList[i]
print(dic)
>>>
{0: '파이썬은', 1: '1991년', 2: '프로그래머인', 3: '
'귀도', 4: '반', ...}
⭐replace()
words = {'짭새': '경찰관', '먹튀': '먹고 도망', '쪼개다': '웃다'}
text = '강도는 서로 쪼개다, 짭새을 보고 빠르게 따돌리며 먹튀했다.'
for key in words.keys():
if key in text:
text = text.replace(key, words[key])
print(text)
>>>
강도는 서로 웃다, 경찰관을 보고 빠르게 따돌리며 먹
고 도망했다.