2017/08/29 19:35

CyclicRotation Dev

오늘의 문제.


특정 값이 입력된 배열을 N번 오른쪽으로 이동 시킨 후,

그 결과가 담긴 배열을 구하는 문제.


예를 들어, [1,2,3,4,5] 라는 배열을 3번 이동하게 되면

결과값으로 [3,4,5,1,2] 를 출력하면 된다.


이 문제는 코드 자체를 구현하는 것보다 

개념적인 방법을 떠올리는데 많은 시간이 걸렸다.


이것은 바꿔말하면, 나의 수학적 기초가 약하다는 뜻이다.

수학이 싫어 문과에 갔던 삶의 행보가 묻어있는....


다시 위의 예시로 돌아가서,

N개의 숫자가 들어있는 배열을 M번 이동시키는 경우에

만약 N과 M이 같다면 숫자의 위치는 처음 있던 제자리로 돌아오게 될 것이다.


여기서 착안해보면 N과 M이 다른 경우에는 숫자의 위치가 

M값을 N으로 나눈 나머지 만큼만 이동한다는 뜻이다.


배열의 크기인 N은 고정으로 두고, 

이동횟수인 M값과 증가하는 배열의 자리값만큼 더한 값에 나눠주면

결과를 찾을 수 있다.



코드

 




결과

 

코딜리티의 제한시간은 2시간이지만

저 개념을 도출해 내는데 2시간 이상을 소모했다.


뭔가 씁쓸한 결과이기도 하다.

개발이라는 것이 단순한 웹 개발만 평생 할 작정이라면

수학적 기초 따위 아무래도 좋다.


그러나 정말 문제를 해결하는 핵심에 다다르기 위해서는

수학적 기초가 너무나도 중요하다는 것을

매일매일 느끼고 좌절하는 중이다.


덧글

댓글 입력 영역


skin by mater