아래와 같이 나선형 모양(right helix)의 숫자집합이 있습니다.
(여기서는 N=5 일 때를 보여줍니다.)
1 2 3 4 5 -- line 1
16 17 18 19 6 -- line 2
15 24 25 20 7 -- line 3
14 23 22 21 8 -- line 4
13 12 11 10 9 -- line 5
위 숫자들 오른쪽에 해당 숫자가 몇 번째 라인에 속하는지 표시해 놓았습니다.
여기서 문제는 숫자집합이 위의 형태일때,
숫자가 1,2,3, .... 순차적으로 증가할 때, 각 숫자가 순서대로 몇번째 라인에
속하는지를 나타내는 쿼리를 만드는 것입니다.
위의 경우에 이 라인번호를 순서대로 출력해 보면,
(당연히, N*N 개 행이 출력되어야 합니다.)
1 -- 번호 1 은 1 라인에..
1 -- 번호 2 은 1 라인에..
1 -- 번호 3 은 1 라인에..
1 -- 번호 4 은 1 라인에..
1 -- 번호 5 은 1 라인에..
2 -- 번호 6 은 2 라인에..
3 -- 번호 7 은 3 라인에..
4 -- 번호 8 은 4 라인에..
5
5
5
5
5
4
3
2
2
2
2
3
...
...
이런식이 되겠죠.
일반적으로 변수 N(N*N 개 행이 출력)이 주어졌을 때, 라인 넘버를 찍어주는 쿼리를 찾는 것입니다.
도전해 보시길...
잘 하셨습니다.
그런데, 인라인뷰 사용 횟수도 줄이고 쿼리도 더 줄여 보세요.
가능합니다.
출제자 입니다.
저는 with 문을 제외하고 인라인뷰를 2번 써서(즉 select를 3번 써서) 쿼리를 만들었습니다.
(v상이v 님은 상옥님이신가요? ^^)