Joonas' Note
목록문자열 (2)
Joonas' Note
문자열을 정수로 해싱하기 + 사전순 비교까지 (String to unique integer hashing)
문자열을 정수로?이 글에서 다루는 내용은, 문자열의 형태로 적혀있는 "112223"과 같은 문자열을 말하는 것이 아닙니다. 영어 소문자로만 이루어진 "aaabbb" 또는 대문자로만 이루어진 "ABCCDD" 같은 문자열을 정수형 변수 하나에 담는 것을 말합니다.왜?보통 해싱은 작은 크기로 우겨넣기 때문에 데이터 손실이 일어나는 형태가 많습니다. 그래서 그대로 저장하면 충돌 해결 이슈가 따라오죠. (resolving collisions in hash tables) 정수로 바꾸어서 다룬다면 문자열 비교를 길이만큼인 \(O(|s|)\) 가 아닌 정수 비교 시간인 \(O(1)\) 으로 줄일 수 있습니다. 조건만 가능하다면 데이터의 손실 없이 그대로 담을 수도 있죠.26진법소문자 26개 혹은 대문자 26개만 사용하..
알고리즘/문제 풀이
2020. 2. 21. 14:47
C++ getline 공백 케이스 알아보기
네임스페이스 std 아래에 있는 함수 getline은 한 줄 단위로 입력 받으며, 스페이스와 탭 등의 공백 문자들도 그대로 유지된다.하지만 C++ 레퍼런스[1][2]에서는 공백에 대한 예제는 잘 나와있지 않아서 글로 남긴다. 아래 코드로 여러 케이스를 확인해보자. test-getline-input.txt에 적힌대로 입력하면, test-getline-output.txt와 같은 출력을 확인할 수 있다. ^는 문자열의 시작을, $는 문자열의 끝을 표시하기 위해 사용했다.공백 문자와 탭 문자가 포함된 문자열들, 심지어는 길이가 0인 문자열도 모두 잘 입력되는 걸 확인할 수 있다.
개발/C++
2018. 11. 25. 23:33