[Algorithm] 문자열 정렬
·
Coding Test/Algorithm
📕 목차1. 자바의 String 사전 지식2. LSD(Least Significant Digit)3. MSD(Most Significant Digit)4. Three-way String Quicksort1. 자바의 String 사전 지식 • char 데이터 타입 (feat. Character)• String 데이터 타입• StringBuilder• 두 개의 문자열 비교• Alphabet• 문자열 정렬 알고리즘 필요성 📌 char 데이터 타입 (feat. Character)C언어를 공부할 때는 char 타입이 8-bit(1byte)였는데, 자바에서는 16-bit(2byte)의 크기를 갖는다.이는 제공하는 문자 체계가 다르기 때문이다.C: 7-bit의 ASCII 코드 지원Java: 16-bit의 Unic..
알고리즘 문제를 풀면서 생각해보아야 할 것들
·
Coding Test/Algorithm
이제 1년하고 1달 조금 넘게 코딩을 하면서, 알고리즘이라고는 실버 2주, 골드 1달, 플래티넘 1달 정도밖에 풀어보지 않은 짬밥에 뭘 얼마나 유용한 걸 설명할 수 있을 지는 모르겠지만 그래도 내 생각을 정리할 목적으로 써보는 중. 참고로 저자 구종만님의 프로그래밍 대회에서 배우는 알고리즘 문제 해결 전략에 나오는 내용과 비슷한 말을 할 수도 있다. 카피할 의도는 없는데, 애초에 날 처음 가르친 친구가 이렇게 세뇌 교육을 시켜놨던 터라 나도 모르겠다. 목차 1. 알고리즘과 문제 해결 능력 2. 전략적 접근 3. 알고리즘을 개선하는 흐름 4. 모든 곳에 통용되는 알고리즘 따윈 없다. 1. 알고리즘과 문제 해결 능력 코테 준비를 많이 해보지 않은 시점에서 문제를 슥슥 해결해내는 사람들을 보면 '저 사람은 정..
[Algorithm] 빅오 표기법과 시간/공간 복잡도
·
Coding Test/Algorithm
알고리즘 파트를 포스팅한다면 제일 처음은 어떤 내용을 다루어야 할까 고민하다가 역시 Big-O notation과 Time/Space Complexity를 다루기로 했다. 백준 골드 등급 뿐만 아니라 실버에서도 까다로운 문제는 해당 개념을 알아야 한다. 단순히 '빠른 알고리즘을 쓰면 끝나는 거 아니야?'라고 생각할 수 있지만, 언제나 말하지만 소잡는 칼을 닭 잡는 데 쓰는 것은 미친 짓이다. 코테를 치루다가 모르는 알고리즘이 나왔다고 하자. 그냥 포기할 것인가? 그 순간에 내 알고리즘이 왜 통과가 될 수 없는지 원인을 분석하고 문제를 해결할 수 있는 방안을 찾아내야 한다. 문제를 보고 어떤 알고리즘을 사용할지 물색하는 과정은 가장 무식한 브루트 포스부터 시작할 지언정 그걸 떠올려보는 것과 진짜로 구현해봐야..