첫 번째 날 문제는,
엄청 많은 숫자들이 적혀있는 파일을 갖고
숫자들 한 묶음씩마다 합을 계산한다음 가장 큰 수를 골라내야 하는 것이었다.
# 1
file = open("input/day1.txt", "r")
number_list = file.read().splitlines()
# 2
str_list = []
each_str_list = []
for number in number_list:
each_str_list.append(number)
if number == "":
str_list.append(each_str_list)
each_str_list = []
# 3
for list in str_list:
if "" in list:
list.remove("")
# 4
sum_list = []
sum = 0
for list in str_list:
for number in list:
sum += int(number)
sum_list.append(sum)
sum = 0
# 5
print(max(sum_list))
# 6
sum_list.sort()
print(sum_list[-1] + sum_list[-2] + sum_list[-3])
#1 먼저 파일을 열고 한 줄 씩 읽어서 하나의 리스트로 number_list라는 변수에 담아줬다.
>> ["7", "9", "1", "23", "16", "", "3", "678", ... ]
#2 데이터 타입을 확인해보니 string이 길래 일단 각각 묶인 숫자들을 담을 리스트변수 each_str_list와 그 리스트들을 담을 str_list 변수를 만들어주었고, 아까 담아둔 리스트 number_list를 for 문으로 하나하나 돌면서 each_str_list에 담아줬다. 각각 숫자 그룹은 빈 줄로 나눠지기 때문에 빈 줄이 나온다면 담아뒀던 each_str_list를 str_list에 담고 each_str_list는 다시 비어내어 새로운 숫자 그룹이 담길 수 있게 하였다.
>> [[1, 2, 3, 4, ""], [5, 6, 7, 8, ""], ... ]
#3 그렇게 담보고니 각각 숫자 그룹들마다 빈 줄 ("") 이 함께 담겨서 str_list를 돌며 각 리스트 마다 있는 ""를 지웠다.
>> [[1, 2, 3, 4], [5, 6, 7, 8], ... ]
#4 이제 각 숫자그룹의 합을 담을 리스트 (sum_list) 와 합을 계산할 sum 변수를 만들어주고 str_list에 담겨 있는 숫자 그룹 리스트들을 돌며 그 숫자들(아직 string)을 int로 변환하여 sum에 더해주었다. 한 숫자 그룹의 합 계산이 끝나면 그 값을 sum_list에 담아주었고 sum은 다시 0을 만들어 새로운 숫자그룹의 합이 담길 수 있게 해주었다.
>> [10, 26, 43, ... ]
#5 max() 함수를 사용하여 sum_list 중 가장 큰 값을 뽑아내면 첫 번째 퀴즈 값이 나온다!
#6 sort() 함수를 활용하여 리스트를 오름차순으로 정리해준 다음 인덱스값을 이용하여 마지막 세 값을 합해주면 두 번째 퀴즈 값이 나온다!
작년 Advend of Code 때는 손도 못대서 가입만 하고 문제는 하나도 못 풀었는데
이번엔 손은 대볼 수 있게 되었다! 이게 아우스빌둥 4개월차의 힘인가...!!
하지만 어거지로 어찌어찌 푼 거라 뭔가 풀이과정에 쓸데 없는 게 많은 느낌이다.
다른 사람들이 푼 코드도 참고를 해야겠다.
'컴퓨터 & 코딩 > Python' 카테고리의 다른 글
[Python] Advent of Code 2022 - Day 3 (0) | 2022.12.03 |
---|---|
[Python] Advent of Code 2022 - Day 2 (0) | 2022.12.02 |
[혼공학습단 8기][혼공파] 7주 동안의 혼공학습단 후기 (0) | 2022.08.16 |
[혼공학습단 8기][혼공파] 6주차 과제 (0) | 2022.08.15 |
[혼공학습단8기][혼공파] 함수, 튜플과 람다 (0) | 2022.08.08 |