1번

M = "aaa bbb aaa ccc bbb bbb"

word_counts = {}

for word in M.split():
    if word not in word_counts:
        word_counts[word] = 0
    word_counts[word] +=1

word_sort = sorted(word_counts.items(), key = lambda x: x[1], reverse = True)

for word, count in word_sort:
    print(word, count)

#나머지 동일.

  1. x (딕셔너리의 키는 불변(immutable)한 객체만 가능합니다. 리스트는 변경 가능(mutable)하기 때문에 딕셔너리의 키로 사용할 수 없습니다.)
  2. x (정수 리터럴 7과 변수 x는 같은 값을 가리키지만, 서로 다른 식별번호(identity)를 갖습니다.)
  3. o (파이썬 3.7부터는 딕셔너리의 순서가 보존됩니다. 이전 버전에서는 딕셔너리의 순서는 무작위였습니다.)
  4. o (튜플은 리스트와 유사하지만, 값을 변경할 수 없는(immutable) 자료형입니다. 따라서, 한 번 생성된 튜플의 요소를 변경할 수 없습니다. 하지만, 튜플의 순서는 변경할 수 있습니다.)
  5. o (파이썬에서 모든 객체는 메모리를 차지하고, 식별번호를 가집니다.)
  6. o (for 루프에서 문자열을 순회할 경우, 문자열의 각 문자가 순서대로 출력됩니다.)
  7. o (strip() 함수는 문자열의 양쪽 끝에 있는 모든 공백을 제거합니다. 이때 개행문자('\n')도 공백으로 취급되어 제거됩니다.)
  8. o (items() 함수는 딕셔너리의 키-값 쌍을 튜플(tuple)로 묶어서 리스트에 저장합니다.)
  9. o (test 변수는 튜플로 선언됩니다. 괄호로 둘러싸지 않아도 여러 개의 값이 쉼표로 구분되면 튜플로 인식됩니다.)
  10. o (t[:]은 t의 모든 요소를 포함하는 새로운 튜플을 반환합니다. 따라서, t가 비어있으면 빈 튜플이 출력됩니다.)

2번

birthday = input()  # 생년월일을 입력받습니다.
n = int(input())  # 정수 n을 입력받습니다.

# 생년월일의 숫자를 구합니다.
numbers = list(map(int, list(birthday)))
numbers = numbers[:8] + numbers[10:]

# n번째 숫자까지의 합을 구합니다.
sum1 = sum(numbers[:n])

# 나머지 숫자들의 합을 구합니다.
sum2 = sum(numbers[n:])

# 두 합을 비교하여 결과를 출력합니다.
if sum1 > sum2:
    print(sum1)
elif sum1 < sum2:
    print(sum2)
else:
    print("동점입니다")