알고리즘
Posts
67 postsOddOccurrencesInArray
오늘은 두 번째 Codility 문제에 도전하였다.중국쪽 회사에 개발환경 테스트 관련 영어메일을 보내느라 멘붕이었지만.. 어쨌든 도전.. 문제는 이렇다.입력된 배열의 값 중에 중복되지 않는 값을 찾아내는 것. 예를 들어[9, 3, 9, 3, 9, 7, 9] 라는 값이 입력되면짝꿍이 없는 7을 정답으로 제출하면 된다. 나의 계획은입력된 값을 비교하여 같으면 0으로 변환하고, 혼자 남는 값을 남겨서 출력해보자. 코드 결과는 여기까진 좋았으나..결과를 제출하자 예상치 못한 오류를 만났다. 숫자가 커지자 time out 에러가 발생... 내 두뇌의 한계는 여기까지였기 때문에, 고수들의 도움을 요청하였다.그 결과 XOR 연산을 이용해서 풀어내는 방법을 알게 되었다.XOR 연산은 비트연산으로,
binary gap
Codility 라는 사이트에서 코딩테스트 연습을 하고 있다.오늘은 그 첫 번째 문제에 도전.이진수에서 0이 반복되는 최대 숫자를 구하는 문제.예를 들어, 1041은 이진수로 10000010001 이므로,최대 반복되는 0의 숫자는 5.따라서 결과값이 5가 나와야 한다.처음에는 무조건 이진수 구현에 매몰되어 있다가생각해보니 굳이 그럴 필요가 없다.2로 나눠서 나머지가 0이면 카운팅 한 뒤 최종 변수에 넘겨주고,1이면 중간 카운팅 변수를 0으로 초기화 시킨다.그 후 중간 변수와 최종 변수를 비교하여 최종 변수가 크면 그대로 출력.최종 변수가 작으면 둘을 바꿔주면 된다. 작성한 코드 결과는 끝.
선택정렬 (Selection Sort)
선택정렬은 기본적으로 자료의 선택과 교환 연산으로 이루어져 있다. 다만 이러한 선택과 교환 연산을 자료의 개수대로 n 번만큼 루프를 돌면서 실행한다, 따라서 선택 정렬이 두개의 루프를 돌면서 실행하는 비교 연산의 전체 횟수는 아래와 같이 계산할 수 있다. O((n-1) + (n-2) + ... + 3 + 2 + 1) = O(n(n-1) / 2) = O(n²) 또한 이때 실행되는 자료의 교환 횟수는 바깥 루프의 횟수와 같다. 다만 각 교환마다 3번의 이동 연산이 필요하기 때문에 전체 이동 연산의 횟수는 아래와 같다. O(3(n-1)) = O(n) 최종적으로 선택정렬의 효율성은 앞의 비교 연산과 이동 연산의 합으로 구하므로, 이 경우 O(n²) 이 된다. O(n² + n) = O(n²) 선택정렬

삼성 신입 SW 역량테스트 후기
4월 16일 일요일, 생각지도 못한 삼성전자 서류전형에 통과한 나는 SW 역량테스트를 보러 아침 일찍 길을 향했다. 대학생 시절부터 삼성하고는 인연이 없었는데 지금 생각하니 4년제 대학교만 딸랑 졸업한 나는 정말 아무것도 없었던 것 같다. 그러니 서류에서부터 걸러질만도 하지. 지금도 아무것도 없기는 마찬가지지만 그래도 1년 남짓한 경력이 어느정도 도움은 되었던 것일까. 서류를 합격하고 나름 어렵다고 소문난 삼성 SW 시험을 보러 영통역을 향해 가며 많은 생각이 들었다. 제대로 풀 수 있을지, 괜히 3시간 동안 멍 때리러 가는 것이 아닌지. 듣기로는 어려운 난이도의 알고리즘 문제가 두 문제 정도 출제된다고 들었었다. 최근 한 달 들어 열심히 공부하고 있기는 하지만

