재미 삼아서 AI 도구에 넣어서 돌려봤는데, 답이 그럴듯하게 나와서 한번 올려본다.
Day 1 문제는 아래와 같다. (https://adventofcode.com/2024/day/1)
--- Day 1: Historian Hysteria ---
The Chief Historian is always present for the big Christmas sleigh launch, but nobody has seen him in months! Last anyone heard, he was visiting locations that are historically significant to the North Pole; a group of Senior Historians has asked you to accompany them as they check the places they think he was most likely to visit.
As each location is checked, they will mark it on their list with a star. They figure the Chief Historian must be in one of the first fifty places they'll look, so in order to save Christmas, you need to help them get fifty stars on their list before Santa takes off on December 25th.
Collect stars by solving puzzles. Two puzzles will be made available on each day in the Advent calendar; the second puzzle is unlocked when you complete the first. Each puzzle grants one star. Good luck!
You haven't even left yet and the group of Elvish Senior Historians has already hit a problem: their list of locations to check is currently empty. Eventually, someone decides that the best place to check first would be the Chief Historian's office.
Upon pouring into the office, everyone confirms that the Chief Historian is indeed nowhere to be found. Instead, the Elves discover an assortment of notes and lists of historically significant locations! This seems to be the planning the Chief Historian was doing before he left. Perhaps these notes can be used to determine which locations to search?
Throughout the Chief's office, the historically significant locations are listed not by name but by a unique number called the location ID. To make sure they don't miss anything, The Historians split into two groups, each searching the office and trying to create their own complete list of location IDs.
There's just one problem: by holding the two lists up side by side (your puzzle input), it quickly becomes clear that the lists aren't very similar. Maybe you can help The Historians reconcile their lists?
For example:
3 4
4 3
2 5
1 3
3 9
3 3
Maybe the lists are only off by a small amount! To find out, pair up the numbers and measure how far apart they are. Pair up the smallest number in the left list with the smallest number in the right list, then the second-smallest left number with the second-smallest right number, and so on.
Within each pair, figure out how far apart the two numbers are; you'll need to add up all of those distances. For example, if you pair up a 3 from the left list with a 7 from the right list, the distance apart is 4; if you pair up a 9 with a 3, the distance apart is 6.
In the example list above, the pairs and distances would be as follows:
The smallest number in the left list is 1, and the smallest number in the right list is 3. The distance between them is 2.
The second-smallest number in the left list is 2, and the second-smallest number in the right list is another 3. The distance between them is 1.
The third-smallest number in both lists is 3, so the distance between them is 0.
The next numbers to pair up are 3 and 4, a distance of 1.
The fifth-smallest numbers in each list are 3 and 5, a distance of 2.
Finally, the largest number in the left list is 4, while the largest number in the right list is 9; these are a distance 5 apart.
To find the total distance between the left list and the right list, add up the distances between all of the pairs you found. In the example above, this is 2 + 1 + 0 + 1 + 2 + 5, a total distance of 11!
Your actual left and right lists contain many location IDs. What is the total distance between your lists?
다음은 AI가 생성한 답안이다. 받은 내용 그대로 옮겨보았다. (맞춤법 수정 및 형식만 고쳤다.)
이 문제를 해결하기 위한 Python 코드를 작성해 보겠습니다. 주어진 두 리스트의 각 요소를 정렬하여 짝을 맞추고, 차이의 절댓값을 합산하는 방식으로 구현하겠습니다.
def calculate_total_distance(left_list, right_list):
# 입력 리스트들을 정렬
sorted_left = sorted(left_list)
sorted_right = sorted(right_list)
# 총 거리를 저장할 변수
total_distance = 0
# 각 위치에서의 숫자 차이를 계산하고 합산
for i in range(len(sorted_left)):
distance = abs(sorted_left[i] - sorted_right[i])
total_distance += distance
return total_distance
def main():
# 예제 입력
left = [3, 4, 2, 1, 3, 3]
right = [4, 3, 5, 3, 9, 3]
# 실제 입력을 받을 경우:
"""
left = []
right = []
while True:
try:
l, r = map(int, input().split())
left.append(l)
right.append(r)
except EOFError:
break
"""
result = calculate_total_distance(left, right)
print(f"Total distance: {result}")
if __name__ == "__main__":
main()
이 코드는 다음과 같이 작동합니다:
1. `calculate_total_distance` 함수는 두 개의 리스트를 입력받아 총거리를 계산합니다.
- 각 리스트를 정렬합니다.
- 같은 인덱스의 숫자들의 차이(절댓값)를 계산합니다.
- 모든 차이를 더해 총거리를 구합니다.
2. `main` 함수는:
- 예제 입력값을 사용하거나 실제 입력을 받을 수 있습니다.
- 계산된 결과를 출력합니다.
예제 입력을 사용할 경우, 출력은 다음과 같습니다:
Total distance: 11
실제 문제를 풀 때는 주석 처리된 입력 부분의 주석을 해제하고 사용하면 됩니다. 각 줄에 두 개의 숫자가 공백으로 구분되어 입력될 것으로 가정하고 있습니다.
입력 형식이 다르다면 입력 부분을 적절히 수정하여 사용하면 됩니다.
'Etc' 카테고리의 다른 글
| BYTE 아카이브 (0) | 2025.08.28 |
|---|---|
| AWS Dev Day 2018 Seoul (0) | 2018.11.12 |
| Pencil (0) | 2017.11.29 |