버블 정렬 (Bubble Sort) 총 정리 - 개념, 원리, 동작 예시, 시간 복잡도, C언어, Java, Python 예시코드, 주의점, 장단점
1. 버블 정렬이란?버블 정렬은 인접한 두 요소를 비교하며 정렬하는 가장 기본적인 정렬 알고리즘입니다. 간단한 구조와 구현 덕분에 학습 목적으로 자주 사용되지만, 효율성 면에서는 다른 정렬 알고리즘에 비해 성능이 떨어집니다. 2. 원리첫 번째 요소와 두 번째 요소를 비교하여 크기를 기준으로 위치를 바꿉니다.두 번째 요소와 세 번째 요소를 비교하여 동일한 작업을 수행합니다.마지막 요소까지 이 작업을 반복합니다. 이 과정을 한 번 완료하면 가장 큰 값이 맨 끝에 위치하게 됩니다.위 과정을 반복하며 정렬되지 않은 나머지 요소를 계속 비교해 정렬을 완성합니다. 3. 동작 예시 (구체적인 설명)정렬할 배열: [5, 3, 8, 4, 2], 오름차순으로 정렬하기첫 번째 패스 (Pass 1):비교: 5와 3 → 3..
2024. 12. 31.
[안드로이드] 꼭 알아야 할 크기 단위 총정리(dp, px, sp) - 개념, 예시, 차이점, 비교
안드로이드 개발을 하다 보면 dp, px, sp와 같은 다양한 크기 단위를 접하게 됩니다. 개발 시 어떤 단위를 써야할 지 헷갈리는 경우가 많아서 자주 구글링을 하곤 합니다. 이 글에서는 각각의 단위가 무엇인지, 어떻게 사용해야 하는지, 각각의 단위의 차이점이 무엇인지, 그리고 올바르게 활용하기 위한 팁과 주의사항을 총 정리해서 앞으로 헷갈리지 않도록 도와드리겠습니다. 1. px (픽셀, Pixel)개념: px은 화면의 실제 물리적 픽셀을 기준으로 한 단위입니다. 1px은 디스플레이의 가장 작은 단위이며, 디바이스의 해상도에 따라 크기가 고정됩니다.주의점: px은 디바이스마다 해상도가 다르기 때문에 화면 크기가 동일하더라도 화면 밀도(density)에 따라 요소 크기가 달라 보일 수 있습니다. 이로 ..
2024. 12. 30.
문자열 처리 알고리즘(2) - 라빈 카프 알고리즘 개념, 원리, 장단점, 시간복잡도, C언어, Java, Python 예제코드
문자열 탐색은 코딩 테스트에서 꽤 자주 출제되는 유형입니다. 오늘은 지난 포스팅에 이어서 문자열 탐색에서 유명한 라빈 카프 알고리즘 (Rabin-Karp Algorithm) 에 대해 알아보겠습니다.라빈 카프 알고리즘의 개념부터 동작 원리, 예제, 장단점, 그리고 다양한 프로그래밍 언어로 구현된 예제 코드까지 다루겠습니다. 초보자도 이해하기 쉽도록 하나하나 상세히 설명하겠습니다. 😊 1. 라빈 카프 알고리즘의 개념라빈 카프 알고리즘은 텍스트 내에서 특정 패턴을 찾기 위해 해시 값을 사용하는 알고리즘입니다.텍스트의 부분 문자열(substring)과 패턴의 해시 값을 비교하여 패턴이 존재하는 위치를 찾습니다.단순 비교 알고리즘(Brute Force)보다 효율적이며, 특히 여러 패턴을 검색할 때 유용합니다..
2024. 12. 28.
문자열 처리 알고리즘(1) - KMP 알고리즘 개념, 원리, 시간복잡도, 장단점, 주의점, C,Java,Python 예시코드
문자열 검색은 코딩 테스트에 꽤 자주 나오는 유형입니다. KMP(Knuth-Morris-Pratt) 알고리즘은 이러한 문자열 검색 문제를 효율적으로 해결할 수 있도록 설계된 알고리즘입니다. 이번 포스팅에서는 KMP 알고리즘의 개념, 동작 원리, 시간 복잡도, 장단점, 구현 예제 등을 상세히 다루겠습니다. 1. KMP 알고리즘의 개념 KMP 알고리즘은 주어진 텍스트(text)에서 특정 패턴(pattern)을 효율적으로 찾는 방법을 제공합니다. 일반적인 탐색 방법은 모든 위치에서 패턴과 텍스트를 비교하지만, KMP는 "중복 작업"을 피하면서 효율성을 극대화합니다.핵심 아이디어는 패턴의 접두사(prefix)와 접미사(suffix) 정보를 미리 계산해 활용하는 것입니다. 이를 통해 불필요한 비교를 줄일 수 ..
2024. 12. 27.