더 나은 문제 풀이

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

    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;
    }
    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.