Skip to content

Latest commit

 

History

History

day4

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 

Day 4: 캠프 청소 (Camp Cleanup)

https://adventofcode.com/2022/day/4

Part 1

배에서 마지막 보급품을 내리기 전에 공간을 비워야 해서, 여러 엘프들이 캠프 구역을 청소하는 일을 맡았습니다. 모든 구역에는 고유한 ID 번호가 있으며, 각 엘프는 특정 범위의 구역 ID들을 할당받습니다.

그러나 일부 엘프들이 할당된 구역을 서로 비교하면서, 할당된 구역들이 많이 중복되는 것을 발견했습니다. 겹치는 부분을 빠르게 찾고 불필요한 일을 줄이기 위해, 엘프들은 짝을 지어 각 쌍(퍼즐 입력)에 대한 할당된 구역의 큰 목록을 만듭니다.

예를 들어 다음과 같은 할당된 구역 쌍 목록이 있다고 가정합시다.

2-4,6-8
2-3,4-5
5-7,7-9
2-8,3-7
6-6,4-6
2-6,4-8

처음 몇 쌍의 경우 이 목록은 다음을 의미합니다.

  • 첫 번째 쌍의 엘프들을 보면, 처음 엘프는 구역 2-4(구역 2, 3, 4)가 할당되었고, 두 번째 엘프는 구역 6-8(구역 6, 7, 8)이 할당되었습니다.
  • 두 번째 쌍의 엘프들에게는 각각 두 개의 구역이 할당되었습니다.
  • 세 번째 쌍의 엘프들에게는 각각 세 개의 구역이 할당되었습니다. 하나는 5, 6, 7, 다른 하나는 7, 8, 9입니다.

위 예제에서는 한 자릿수의 구역 ID를 사용하여, 쉽게 도표로 그릴 수 있습니다. 실제 목록(퍼즐 입력)에는 더 큰 숫자가 포함될 수 있습니다. 시각적으로 이러한 구역 할당 쌍은 다음과 같이 표현됩니다.

.234.....  2-4
.....678.  6-8

.23......  2-3
...45....  4-5

....567..  5-7
......789  7-9

.2345678.  2-8
..34567..  3-7

.....6...  6-6
...456...  4-6

.23456...  2-6
...45678.  4-8

일부 쌍은 할당 중 하나가 다른 하나를 완전히 포함하고 있음을 알 수 있습니다. 예를 들어, 2-8은 완전히 3-7을 포함하고, 4-66-6을 완전히 포함합니다. 하나의 할당이 다른 할당을 완전히 포함하는 쌍에서, 한 명의 엘프는 파트너가 청소할 구역을 독점적으로 청소하므로, 다시 할당하는 것이 필요할 것 같습니다. 위 예시에서는, 이러한 쌍이 2개 있습니다.

한 범위가 다른 범위를 완전히 포함하는 할당 쌍은 몇 개입니까?

Part 2

여전히 중복된 작업들이 꽤 많이 있는 것 같습니다. 대신 엘프들은 겹치는 쌍의 수를 알고 싶어 합니다.

위의 예에서 처음 두 쌍(2-4,6-82-3,4-5)은 겹치지 않지만, 나머지 네 쌍(5-7,7-9, 2-8,3-7, 6-6,4-62-6,4-8)은 겹칩니다.

  • 5-7,7-9은 구역 7이 겹칩니다.
  • 2-8,3-7은 구역 3부터 7까지 모든 구역이 겹칩니다.
  • 6-6,4-6은 구역 6이 겹칩니다.
  • 2-6,4-8은 구역 4, 5, 7이 겹칩니다.

따라서 이 예에서 겹치는 할당 쌍의 수는 4입니다.

범위가 겹치는 할당 쌍은 몇 개입니까?