728x90 java129 순서가 보장되는 map과 set java에는 Map과 Set으로 HashMap과 HashSet, TreeMap과 TreeSet이 있습니다.cpp에는 같은 효과를 내는 unordered_map과 unordered_set, map과 set이 있습니다. 이 모든 map과 set은 순서를 보장하지 않죠. 알고리즘 문제를 풀거나, 프로젝트를 개발하다보면순서가 보장되면서, key값이 중복되지 않는 것들을 추려야 하는 경우가 발생합니다. 이런 경우 LinkedHashMap과 LinkedHashSet이라는 라이브러리 함수를 통해 진행이 가능합니다. LinkedHashSet set = new LinkedHashSet();set.add(1);set.add(2); System.out.print(set);다음과 같이 사용할 수 있으며, 결과는 다음과 같습.. 2024. 8. 25. Spring boot에서의 logback 설정 Spring boot에서는 logback위치를 java-resource의 위치에 있는 logback.xml 위치를 보고 log 위치를 지정합니다. 그러나 이렇게 진행하는 경우 ${LOG_PATH}와 같은 변수가 들어가 있는 경우, 이를 인식하지 못하는 현상이 발생합니다.물론 이런식으로 logback.xml의 옵션으로 LOG_PATH를 지정할 수 있습니다. 그렇지만, 만약에 LOG_PATH를 특정 파일의 값으로 읽어와 지정하는 경우에는 해당 방식을 사용할 수 없습니다.그래서 다음과 같은 방식으로 LOG_PATH에 대한 값을 소스코드로 입력할 수 있습니다.LoggerContext loggerContext = (LoggerContext) LoggerFactory.getILoggerFactory();logger.. 2024. 8. 5. Two-Way String-Matching에 대하여 오늘은 KMP 방식과 Boyer-Moore의 방식을 조합하여 양방향으로 탐색하는 Two-Way String Matching Algorithm에 대하여 알아보도록 하겠습니다. python 3.10에서 적용한 이후 약 25배가량의 엄청난 효과를 보았다고 알려진 알고리즘 입니다.C의 strstr의 하위 문자열 함수를 구현하는데에도 사용되어져 있습니다. 찾고자 하는 문자열이 앞에 있는 경우개수 / 문자열 길이 / 패턴 길이kmp(s)boyer-moore (s)rabin-karp (s)two-way String Macthing (s)100,000 / 2,000 / 107.926154.06316.30524.87610,000 / 5,000 / 100.96616.5241.7982.69 찾고자 하는 문자열이 뒤에 있는 .. 2024. 7. 21. rabin-karp 이번에는 hashing을 활용한 문자열 매칭 알고리즘인 라빈-카프(rabin-karp)에 대해 알아보고자 합니다. 라빈-카프 알고리즘의 시간복잡도는 O(N)으로 지금까지 진행하였던 왠만한 문자열 매칭 알고리즘보다 빠르다는 장점이 있습니다.그치만, 여러 가지 다양한 부분에서 문제점이 있어 실제 서비스에서는 사용하기 어렵다는 단점이 있습니다. 장점 - 시간이 빠르다단점 - hashing 값이 충돌이 날 수 있다. - overflow가 발생할 수 있다. "abbaba"라는 문자열에 "aba"라는 문자가 포함되어 있는지 확인하는 방법을 예시로 들어보겠습니다.hashing을 사용하기 때문에, 자리수마다의 문자의 아스키 코드 넘버에 특정 값을 곱하여 하나의 숫자 단위로 표현합니다.2를 활용하여 예시를 들면 pat.. 2024. 7. 11. 이전 1 2 3 4 5 6 7 ··· 33 다음 728x90