Write/Etc
요즘 많이 나오는 면접 문제.
GNUNIX
2014. 12. 6. 18:36
최근 인터넷에서 '면접에서 만난 문제'로 두번이나 보니,
그냥 한번 해보고싶어졌다.
몇분이면 뚝딱 나올줄 알았는데 마지막에 Spiral 형식으로 번호를 어떻게 부여할까 고민하다가 1~2시간 걸려버렸다.(그마저도 고민 그만하고 지금 이 방법으로 하자고 해서....)
먼저 lab80.co의 지원서(https://lab80.typeform.com/to/IcOxyP) 중의 일부입니다.
언어는 javascript로 하였고, 원하는 행과 열을 입력하면 해당하는 테이블이 먼저 생성되고,
나선형(spiral) 번호는 나중에 다시 부여하는 방식을 택했다.
(어떤 패턴을 찾아내서 한번에 가능케 하려고했지만...)
아무튼 결론.
0 | 1 | 2 | 3 | 4 | |
0 | 0_0 | 0_1 | 0_2 | 0_3 | 0_4 |
1 | 1_0 | 1_1 | 1_2 | 1_3 | 1_4 |
2 | 2_0 | 2_1 | 2_2 | 2_3 | 2_4 |
3 | 3_0 | 3_1 | 3_2 | 3_3 | 3_4 |
4 | 4_0 | 4_1 | 4_2 | 4_3 | 4_4 |
위를 보면
0 | 1 | 2 | 3 | 4 |
13 | 14 | 15 | 16 | 5 |
12 | 19 | 18 | 17 | 6 |
11 | 10 | 9 | 8 | 7 |
번호 매겨지는 순서대로
처음엔 col인덱스 값만 증가하고 col인덱스 값이 cols값과 같아지면 row인덱스를 rows값만큼 증가시킨다.(그리고 제일 첫row와 제일 마지막 col은 꽉찬것(지나간길)으로 표시.)
다음 마찬가지로 반복 하되 이번엔 감소.
그리고 계속 반복.
테이블 각 td마다 id를 "row_col"번호로 부여해서 했는데. 좀더 간단하게 할 수 있을것같았는데 갑자기 배가 아파서 그냥 이렇게 하고 끝내기로.