점검 2에서는 다양한 개념들을 활용하여 문제를 해결합니다. 문제 구성은 세 문제에 도전 문제 하나가 있고, 시간은 50분 주어집니다.
다른 라이브러리와 copilot는 금지합니다.
2차원 리스트 a가 주어져 있습니다. a의 각 원소는 서로 같은 길이의 1차원 리스트입니다. 이때, a의 원소들의 각 인덱스의 합을 print문으로 출력하는 프로그램을 만드세요.
# 입력이 다음과 같을 때 출력은 [12, 15, 18] 입니다.
a = [[1,2,3], [4,5,6], [7,8,9]]
# 입력이 다음과 같을 때 출력은 [19, 21] 입니다.
a = [[1,2], [4,5], [7,8], [3,6], [4,0]]
3N + 1 문제는 자연수 n에서 시작하여 n이 짝수면 2로 나누고 홀수면 3을 곱한 뒤 1을 더하는 문제입니다. 이것을 계속 반복하게 되면 대부분 1로 수렴하게 되는데, 모든 자연수에 대해 1로 수렴하는지에 대해서는 아직 알려지지 않았습니다.
재귀함수를 이용하여 3N+1 문제를 구현합니다. 함수의 입력으로 자연수가 들어갔을 때, 1로 수렴하기까지 몇 step이 걸렸는지 그 값을 반환하는 함수를 작성하세요.
# 입력이 다음과 같을 때, 출력은 5 입니다.
print(func(5))
# 입력이 다음과 같을 때, 출력은 3 입니다.
print(func(8))
dictionary.txt에 다음과 같은 내용이 저장되어 있습니다. 아래 기능을 구현할 수 있는 함수를 만드세요.
사과 apple
바나나 banana
고양이 cat
드럼 drum
달걀 egg
*불 fire*
읽기
read_voca()를 통해 dictionary.txt를 읽고, 딕셔너리 voca에 key[한국어]-value[영어] 값들을 저장합니다.
쓰기
add_voca()를 통해 두 개의 입력 인수를 받습니다. dictionary.txt에 입력 인수를 저장하고, 딕셔너리 voca에 key-value 쌍을 하나 추가합니다.
# [읽기] 입력이 다음과 같을 때 출력은 apple입니다.
voca = read_voca()
print(voca["사과"])
# [쓰기] 입력이 다음과 같을 때, dictionary.txt에는 한 줄 더 추가되어야 합니다.
voca = add_voca("불", "fire")
print(voca["불"]) # -> fire 출력