알고리즘
-
Java HashMap의 원리와 해시충돌 해결법Tech 2025. 6. 21. 12:02
Java에서 HashMap은 매우 중요한 자료구조입니다. 이 글에서는 HashMap의 동작 원리와 해시충돌 해결 방법에 대해 설명합니다.≡ 목차 HashMap의 기본 개념 이해하기 Key-Value의 매핑 원리 삽입 삭제 검색의 시간 복잡도 해시 조작을 위한 해시 함수 해시 충돌의 정의와 종류 해시 충돌이란 무엇인가 Open Addressing 방식 Separate Chaining 방식 Java HashMap의 내부 구조 배열과 버킷 구조 이해하기 해시버킷과 노드 형 배열 해시 함수의 작용 방식 결론 해시 버킷 관리 방식 이진 트리로의 변환 기준 트리에서 링크드 리스트로 변화 메모리 관리의 중요성 HashMap 사용 시 주의점 충돌 빈도를 줄이는 팁 키 설계 시 유의 ..
-
유효한 괄호 문자열 확인Tech/Algorithm 2023. 10. 29. 13:12
fun isValidParentheses(s: String): Boolean { val stack = ArrayDeque() for (char in s) { when (char) { '(', '[', '{' -> stack.addLast(char) ')' -> if (stack.isEmpty() || stack.removeLast() != '(') return false ']' -> if (stack.isEmpty() || stack.removeLast() != '[') return false '}' -> if (stack.isEmpty() || stack.removeLast() != '{') return false } } return stack.isEmpty() } fun main() { println..
-
최빈 단어 찾기Tech/Algorithm 2023. 10. 29. 13:12
fun mostFrequentWord(s: String): Pair? { val words = s.split(' ') val frequencyMap = words.groupingBy { it }.eachCount() return frequencyMap.maxByOrNull { it.value } } fun main() { val (word, frequency) = mostFrequentWord("this is a sample program and it is a sample") ?: Pair("", 0) println("$word: $frequency") // "sample: 2" }
-
중괄호 짝 맞추기 문제 풀이Tech/Algorithm 2023. 10. 15. 15:12
주어진 문자열에서 중괄호 {와 }가 올바르게 짝을 이루고 있는지 판별하는 함수를 작성하세요. 올바른 짝을 이루고 있다면 true, 그렇지 않다면 false를 반환해야 합니다. 해결 전략 이 문제를 해결하기 위해선 스택이라는 자료구조를 활용합니다. 스택은 LIFO(Last In, First Out)의 특징을 가진 자료구조로, 마지막에 들어간 요소가 가장 먼저 나오게 됩니다. fun isValidBrackets(s: String): Boolean { val stack = mutableListOf() for (ch in s) { when (ch) { '{' -> stack.add(ch) '}' -> { if (stack.isNotEmpty() && stack.last() == '{') { stack.remov..