문제
무한한 나선은 좌상단 셀에서 시작합니다. 처음 네 행과 네 열은 아래와 같습니다. 같은 패턴으로 정사각형 층이 확장됩니다. 좌표는 1부터 시작합니다.
1 2 9 10
4 3 8 11
5 6 7 12
16 15 14 13전체 그리드를 구성하지 않고 한 셀의 값을 반환하세요.
number_spiral(row, column)을 구현하세요.
입력
row: 위에서부터 세는 행 번호로, 1부터 시작합니다.
column: 왼쪽에서부터 세는 열 번호로, 1부터 시작합니다.
출력
해당 위치의 숫자를 반환하세요.
제약 조건
1 ≤ row, column ≤ 1,000,000,000. 값은 부호 있는 64비트 정수 범위에 들어갑니다.
예시
예시 1
입력:
row = 3
column = 2
예상 출력:
expected = 6
입력:
long long row = 3;
long long column = 2;
예상 출력:
long long expected = 6;
입력:
long row = 3;
long column = 2;
예상 출력:
long expected = 6;
설명
표시된 세 번째 행에서 두 번째 값은 6입니다.
예시 2
입력:
row = 1
column = 4
예상 출력:
expected = 10
입력:
long long row = 1;
long long column = 4;
예상 출력:
long long expected = 10;
입력:
long row = 1;
long column = 4;
예상 출력:
long expected = 10;
설명
네 번째 정사각형 층은 위쪽 행의 10에서 시작합니다.
접근 방법
먼저 스스로 풀어 본 뒤 힌트를 하나씩 열어 보세요.
힌트 1
나선은 정사각형 층으로 만들어지므로, 각 칸은 더 큰 좌표로 정해지는 한 층에 속한다.
힌트 2
그 층의 홀짝에 따라 값이 행 방향으로 증가할지 열 방향으로 증가할지 정한다.
힌트 3
그 층이 좌상단에서 시작하는지, 반대쪽 모서리에서 시작하는지 주의한다.
예상 복잡도
시간 O(1), 추가 공간 O(1)
참고 자료
이 문제는 CodeUtility에 맞게 수정되었습니다. 위의 설명과 제한 조건을 따르세요.