1일 차: 리스프가 아닙니다(2부).

우리는 돌아와서 오늘 Advent of Code 2015의 "Not Quite Lisp"1일 차의 파트 2를 해결할 것입니다.

문제를 살펴보겠습니다.

--- Part Two ---

Now, given the same instructions, find the position of the
first character that causes him to enter the basement 
(floor -1).

The first character in the instructions has position 1,
the second character has position 2, and so on.

For example:

) causes him to enter the basement at character position 1.
()()) causes him to enter the basement at character position 5.

What is the position of the character that causes Santa to
first enter the basement?


그래서 이것은 매우 간단할 것입니다. 우리는 이미 이 도전을 완수하는 데 필요한 모든 조각을 가지고 있습니다.

문자열 조각을 반복하는 동안 해야 할 일은 바닥 값이 -1인지 확인하고 그렇다면 해당 문자의 인덱스를 반환하는 것입니다.

이제 우리는 첫 번째 인스턴스에서만 이 작업을 수행하기를 원하므로 아마도 지하층을 이미 방문했는지 여부를 확인하고 싶을 것입니다.

기존 코드를 수정하여 기본 기능이 다음과 같이 보이도록 합시다.

func main() {
    var result = 0
    var basementHit = false

    input := LoadInput("./input.txt")
    slice := strings.Split(input, "")

    for i, v := range slice {
        switch v {
        case "(":
            result = IncrementByOne(result)
        case ")":
            result = DecrementByOne(result)
        }

        if result == -1 && basementHit == false {
            basementHit = true
            // we `+1` because the problem states that
            // the first char is at index 1
            fmt.Println(i + 1)
        }
    }

    fmt.Println(result)
}


따라서 이 특정 문제 및 입력 데이터에 대해 내 콘솔은 산타가 지하실에 처음 들어가는 시간이 캐릭터 1797이라고 알려줍니다.

답안 상자에 입력하면 성공 메시지가 표시됩니다!

That's the right answer! You are one gold star
closer to powering the weather machine.


그렇게 Advent of Code 2015가 완성된 첫날입니다. 일반적으로 날이 갈수록 문제가 더 어려워지지만 계속해서 문제를 해결하고 가능한 한 많은 문제에 답할 수 있도록 최선을 다하겠습니다.

좋은 웹페이지 즐겨찾기