더북(TheBook)

더 나은 문제 풀이

바로 앞의 풀이에서는 다음과 같이 서로 다른 세 방향에 대한 처리를 각각 했습니다.

while (true) {
    // 아래로 이동
    while (true) {
        triangle[y][x] = v++;
        if (y + 1 == n || triangle[y + 1][x] != 0) break;
        y += 1;
    }
    if (x + 1 == n || triangle[y][x + 1] != 0) break;
    x += 1;

    // 오른쪽으로 이동
    while (true) {
        triangle[y][x] = v++;
        if (x + 1 == n || triangle[y][x + 1] != 0) break;
        x += 1;
    }
    if (triangle[y - 1][x - 1] != 0) break;
    x -= 1;
    y -= 1;

    // 왼쪽 위로 이동
    while (true) {
        triangle[y][x] = v++;
        if (triangle[y - 1][x - 1] != 0) break;
        x -= 1;
        y -= 1;
    }
    if (y + 1 == n || triangle[y + 1][x] != 0) break;
    y += 1;
}
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.