1번 문제
Point : 클래스 상속, 클래스의 메서드 작성 방법
-> 헷갈릴 수도 있지만 차분하게 문제 이해하고 빈칸 채워넣으면 된다.
2번 문제
Point : 문제대로 구현하면 된다.
3번 문제
Point : func_a, func_b, func_c의 역할 확인 후 마찬가지로 문제대로 구현하면 된다.
4번 문제
Point : 0 자체가 없다. 0을 1로 바꿔준다.
그니까 8, 9, 10, 11, 12 이 아니라 8, 9, 11, 12 이다. 여기서 9의 다음 숫자를 구하면 10인데 0이 없으므로 11이다.
마찬가지로, 156999 -> 157000 인데 0이 없으므로 157111이다.
그러니 num에 1을 더한 값을 문자열로 변환한 후, 그 문자열의 0을 1로 모두 바꿔주면 된다.
5번 문제
🔥참고🔥 Point : 처음 생각했던 것은, 1로 초기화 된 n*n 크기의 배열에서 [0][0]에서 열이 n-1까지 증가할 때까지 전의 값을 더하고 (graph[0][i+1] += graph[0][i], 단 i는 0부터 n-2까지), [0][n-1]에서 행이 n-1까지 증가할 때까지 전의 값을 더하고 ... 이런 식으로 생각했는데, 코드 구현에서 막혔다. n이 100만큼 큰 숫자라면..? 일반화를 하지 못 했고, 진전이 없었다.
그래서 위의 링크 걸어놓은 사이트를 참고했는데, 봐도 쉽게 이해가 가지 않는다. 재귀호출하는 것은 알겠지만 어떻게 일반화 했는지 쉽게 정리가 되지 않는다.
--> 구글링 하다가 영감을 얻었다.
---> 소용돌이의 증가 순서는 (→, ↓, ←, ↑) 이다. 그러니까 이 방향을 배열로 ( direction = [1,2,3,4] )로 두고 direction[k] (k는 0)의 값이 1이면 → 방향으로 증가하다 해당 원소의 값이 1이 아니면 멈추거나 진행 방향의 끝에 도달하면 방향 바꾸고, n^2의 값이 되는 순간 멈추면 된다.
6번 문제
Point : 위치 좌표를 어떻게 표현해낼지와 나이트가 움직일 수 있는 경우를 생각하면 된다. 사전을 이용해도 되고, 아스키 코드 번호를 이용해도 되는데 전자 먼저 설명하면, 이런 식이다.
position = {"A": 1, "B": 2, ...} -> x = position[ pos[1] ]
후자는 문자 A의 정수형 값은 65임을 이용한 것이다.
행렬의 방향은 문제 지도에서 시계 방향으로 90도 회전한 것을 기준으로 생각했다.
이후 나이트가 갈 수 있는 모든 경우를 일반화한 리스트를 만들어서 좌표 조건에 부합하는지 검사한 후 정답을 반환한다.