Mgcllee

[알고리즘] 이진 탐색

이것이 취업을 위한 코딩 테스트다 with 파이썬 (나동빈 저) 를 참고해 작성한 포스트입니다. 순차 탐색 여러 탐색 알고리즘 중 가장 가장 기본적인 탐색이 순차 탐색입니다. 순차 탐색은 이름처럼 특정한 데이터를 찾기 위해 앞에서부터 하나씩 차례대로 확인하는 알고리즘 입니다. 보통 정렬되지 않은 배열에서 탐색하기 위해 사용하며 데이터의 개수가...

[Clean Code] 나쁜 코드와 좋은 코드

나쁜 코드 다양한 프로젝트를 진행하면서 어려웠던 것 중 하나가 좋은 코드를 작성하는 것 이였습니다. 설계 단계에서는 매번 객체지향의 SOLID 규칙을 지키며 좋은 코드를 작성하려고 하였으나 마무리는 위 코드처럼 정리되지 않은 코드로 작성되었습니다. 이러한 작성 방법은 파일과 클래스, 메소드, 변수 등 네이밍 규칙이 매번 다르고 현재 문제점만...

[알고리즘] 정렬 알고리즘

이것이 취업을 위한 코딩 테스트다 with 파이썬 (나동빈 저) 를 참고해 작성한 포스트입니다. 정렬은 데이터 집합을 특정한 기준 에 따라 순서대로 나열하는 작업입니다. 특정한 기준으로는 숫자의 내림차순과 오름차순, 문자열의 길이 혹은 각 문자의 합 등 사용자의 필요에 따라 여러 가지가 될 수 있습니다. 정렬 알고리즘은 알고리즘의 효율성을 표...

[알고리즘] 그리디(Greedy) 알고리즘

이것이 취업을 위한 코딩 테스트다 with 파이썬 (나동빈 저) 를 참고해 작성한 포스트입니다. Greedy(탐욕적인) 알고리즘 그리디(Greedy) 알고리즘은 단순하지만 강력한 문제 해결 방법입니다. Greedy 의 사전적 의미는 “탐욕스러운, 욕심이 많은” 이라는 뜻으로 그리디 알고리즘 대신 탐욕법, 탐욕 알고리즘 등의 이름으로 부르기도 ...

[알고리즘] Rabin-karp 문자열 매칭 알고리즘

이전 문자열 매칭 포스트인 KMP 알고리즘 O(M + N)과 동일하게 특정 문자열을 찾고자 할 때 사용되는 알고리즘인 라빈카프 알고리즘을 이번 포스트에서 설명해보겠습니다. 라빈카프 알고리즘에서 해싱(Hashing) 사용 방법 라빈카프 알고리즘은 해싱으로 문자열을 탐색하는 알고리즘입니다. 문자열 M에서 문자열 N을 찾는 상황에서 라빈카프 알고리즘...