더 나은 문제 풀이
바로 앞의 풀이에서는 다음과 같이 서로 다른 세 방향에 대한 처리를 각각 했습니다.
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;
}