오늘은 정규표현식에 대해 정리해보려고 합니다. 정규표현식을 모르는 사람이 표현식을 보면 매우 난해하게 느껴지지만 알고 사용하면 정말 정말 유용하기 때문에, 겁먹지 마시고 공부해보시길 바랍니다 (문자열 처리에 수십 줄의 코드를 작성해야 할 걸 단 몇 줄 만에 끝낼 수 있거든요!) 정규표현식은 특정한 규칙을 가진 문자열의 집합을 표현하는 데 사용하는 형식 언어 입니다. (위키 참고) 이 정규표현식을 사용하면 특정한 규칙을 만족하는지 유효성 검사에 유용하기 때문에 사용자가 입력한 이메일이나 비밀번호가 우리가 만들어 놓은 패턴 혹은 규칙과 부합하는지 쉽게 확인할 수 있습니다. 우선 정규표현식을 사용하려면 사용방법을 알아야겠죠? 정규 표현식에는 다음과 같은 *메타 문자들이 사용됩니다. * 메타 문자: 원래 그 문..
오늘은 기초적인 정렬 알고리즘을 알아보려 합니다. 대표적인 정렬 알고리즘으로는 선택 정렬, 버블 정렬(거품 정렬), 삽입 정렬, 셸 정렬(쉘 정렬), 병합 정렬, 퀵 정렬 등이 있는데요. 간단하게 선택 정렬, 버블 정렬, 삽입 정렬, 쉘 정렬 네 가지 정렬의 정의와 코드를 정리하고 각각의 알고리즘 실행 속도를 측정하여 성능을 비교해 보려 합니다. 1. 선택 정렬 주어진 배열에서 가장 작은 원소를 찾아 첫 번째 원소와 교환하고 두 번째 작은 원소를 찾아 두 번째 원소와 교환하고... 반복하는 정렬 방법 정렬 방법 1. 주어진 배열 중 최솟값을 찾는다. 2. 그 최솟값을 맨 앞의 원소와 교환한다. 3. (N-1)원소에 대해 1-2 방법 반복 소스코드(파이썬) def select_sort(a: list) ->..
보통 코딩 테스트를 볼 때, 조금 난이도가 있는 문제는 알고리즘의 정확성 테스트뿐만이 아니라 효율성 테스트를 함께 검토하게 됩니다. 즉 알고리즘을 잘 구현해서 정답을 잘 맞춰도 효율이 좋지 못하면.. 효율성 테스트를 통과하지 못하게 되는데요. 이럴 경우, 정확성 부분에만 부분점수를 받을수도, 아예 점수를 받지 못할 수도 있습니다. 이 효율성테스트라는 것이 시간 복잡도를 의미합니다. 결국 이 알고리즘이 얼마나 문제를 빨리 풀어낼 수 있는지 체크하는 것이라 할 수 있습니다. 저 같은경우, 딱 문제를 보고 직관적으로 생각나는 방법으로 풀면 무조건 시간 복잡도가 O(n^2)이 나오더라구여 ㅜㅜㅜ 보통 효율성 테스트를 통과하기 위해서는 시간복잡도가 O(nlogn)이 되어야 하는 것 같습니다. 알고리즘을 처음 공부..
오랜만에 글 작성 하는것 같네요 ㅎㅎ.. 사실 머신러닝도 그렇고, iOS도 그렇고 욕심은 많아서 포스팅 하고 싶은 글들이 많은데.. 어쩌다보니 계속 미루게 되었네요. 다시 열심히 작성해 봐야겠습니다! 알고리즘 카테고리의 첫 포스팅인데, 앞으로 이 알고리즘 카테고리에 제가 푼 알고리즘 문제들을 올릴 것 같습니다. (알고리즘 실력이 너무 형편없어서 그냥 기록용으로 올릴 것 같습니다 ㅎㅎ..) 오늘은 알고리즘이 무엇인지와 순서도, 그리고 알고리즘 공부하기 좋은 사이트를 소개해드리려 합니다. 알고리즘 - 특정 문제를 해결하기 위해 논리적으로 기술해 놓은 일련의 명령문 프로그램 - 알고리즘을 컴퓨터가 이해하고 실행할 수 있는 특정 프로그래밍 언어로 표현한 것 순서도 - 미리 정의된 기호와 그것들을 서로 연결하는 ..