문제로 풀어보는 알고리즘 : 시작하기

오른쪽으로 배열 회전하기 배열 arr[]에서 위치 s, t 사이로 1만큼 오른쪽으로 회전시켜보자. 단, arr[t]의 경우, arr[s]로 복사하면 된다. 풀이 순서 i = t : 뒤부터 탐색을 시작하자. arr[i] = arr[i - 1] : 1 만큼 왼쪽으로 이동. arr[s] 에 이르선 arr[s - 1] 이 더 이상 없는 문제가 있음. 사전에 arr[t] 를 last 에 저장하여 arr[s] 에 대입한다. 코드 풀이 void right_rotate(int arr[], int s, int t) { int i, last; last = arr[t]; for (i = t; i > s; i--) arr[i] = arr[i - 1]; arr[s] = last; } N 만큼 이동하기 1만큼 이동하는 함수를 k 번 반복하면 되지만 이 방법은 O(n^k), (n은 s , t 사이의 거리)로 느린 문제가 있다....

2018년 6월 6일 · 2 분 · 388 단어 · 김무훈

동국대 SW전형 실기 후기

위 예시 문제와 비슷한 유형은 시간복잡도(Big-O)와 기백을 잘 응용해보면 쉽게 풀어볼 수 있습니다. 하지만 기백을 잘 못해서(..) 승산이 있을지 걱정이 되었습니다. 그래도 경험 상 시험을 치르는게 좋을 것 같아 가기로 했었고, 오전 9:30분까지 고사장 입실을 해야 되서 전날 아침에 미리 서울로 올라갔습니다. 남은 시간동안 카페에서 녹차를 마시면서 예시 문제와 비슷한 알고리즘을 풀었습니다. 잠을 푹 잘려고 했지만 제가 카페인에 약한 체질이라 잠을 충분히 자질 못했습니다. 7시쯤에 일어나 8시 쯤에 지하철을 꾸벅 꾸벅 졸면서 타다가 동대 입구역에 내렸는데 시험을 보러온 학생들의 인파가 정말 많았었습니다....

2017년 10월 10일 · 1 분 · 189 단어 · 김무훈