[Algorithm] Manacher's Algorithm (마나커, 마나허 알고리즘)

이미지
Manacher's Algorithm 많은 분이 Palindromic Substring을 찾는 문제 해결 방법을 찾다 Manacher's Algorithm을 알게 됐을텐데, 해당 알고리즘을 알아보겠습니다. Palindrome(회문)이란 순서를 뒤집어도 똑같은 문장 혹은 단어를 의미합니다. race car, noon, 기러기, 다시 합창합시다 등 거꾸로 읽어도 동일한 의미를 가집니다. Core Algorithm 해당 알고리즘은 반복문을 돌며 해당 위치의 문자를 중심으로 Palindrome이 되는지 검사합니다. Brute Force로 생각하면 매 문자를 기준으로 Palindrome이 만족하는지를 반복 검사하면 됩니다. Manacher's Algorithm은 이전에 검사한 Palindrome을 이용해 새로운 Palindrome을 찾는 DP(Dynamic Programming)로 접근합니다. 이를 수행하기 위한 방법인 Mirror Optimization 즉, 대칭점 최적화가 있습니다. Palindrome 특징은 중심을 기준으로 반드시 대칭을 이루는데, 이 특징을 이용하여 이전 Palindrome의 길이를 구해 해당 길이부터 새로운 Palindrome을 찾습니다. 중점 c를 기준으로 aba, aba가 대칭을 이루는 것을 볼 수 있습니다. 위 대칭점을 찾을 때 반드시 최적화 과정이 필요한데, 왜 최적화 과정이 필요한지 알아보겠습니다. Algorithm 조건 1 대칭점을 찾기 전, 필요한 변수는 총 3개 입니다. Palindrome의 중심값 Center Palindrome의 오른쪽 끝 위치값 Right i번째 Palindrome의 길이를 저장하는 P 리스트 (C부터 R의 반지름 크기 저장) 이후 i번째 인덱스의 대칭점(mirror)을 찾기 위해 mirror = C*2-i 공식을 이용해 대칭점을 찾고 이를 최적화합니다. 결론적으로 이와 같은 수식이...

[Linux] nvidia deepstream python 설치 방법

이미지
Linux Nvidia Deepstream Python 설치 방법 Ubuntu 22.04, CUDA 12.2 환경에서 Deepstream Python 설치 방법을 알아보겠습니다. Deepstream 설치 여기 에서 본인 CUDA 버전에 맞는 DeepStream 버전을 확인합니다. 저는 CUDA 12.2를 사용하기 때문에 DeepStream7.0을 설치할 예정입니다. 위에서 설치해야하는 DeepStream 버전을 확인했다면, 여기 에서 본인 버전에 맞는 이미지를 확인합니다. 다운받고자하는 버전의 이미지를 다운 받습니다. docker pull nvcr.io/nvidia/deepstream:7.0-samples-multiarch Copy 아래 명령어를 통해 showing 옵션 설정을 진행합니다. xhost + Copy 본인의 버전에 맞도록 아래 사진을 참고하여 도커 컨테이너를 실행합니다. docker run --gpus all -it --rm --runtime=nvidia --network=host --privileged -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=$DISPLAY -w /opt/nvidia/deepstream/deepstream-7.0 nvcr.io/nvidia/deepstream:7.0-samples-multiarch Copy Deepstream Python binding 도커 컨테이너 접속 후 필요한 환경을 설치합니다. apt update apt install python3-gi python3-dev python3-gst-1.0 python-gi-dev git \ python3 python3-pip python3.10-dev cmake g++ build-essential libglib2.0-dev \ libglib2.0-dev-bin libgstreamer...

MAC UTM 윈도우 한영 변경 방법

이미지
MAC UTM 윈도우 한영 변경 방법 MAC UTM을 이용한 가상 윈도우에서 한영 변경 방법에 대해 알아보겠습니다. MAC UTM 설치 방법은 여기 에서 윈도우 한글 깨짐 해결 방법은 여기 를 확인하세요. 한영 변경 1. 키보드 레이아웃 변경 설정 창에서 시간 및 언어 - 언어 및 지역으로 이동 한국어 미트볼 메뉴(점 3개) - 언어 옵션 클릭 화면 스크롤 아래로 이동 키보드 - 레이아웃 변경 클릭 한글 키보드(101키) 종류 1 -> 한글 키보드(101키) 종류 3으로 변경 Shift + Space로 한영 변경 설정 후 '확인' 클릭 (지금 다시 시작 클릭 X) 아래 과정 모두 마무리 후 reboot 권고, 바로 reboot해도 상관없음 2. 키보드 추가 키보드 - 키보드 추가 클릭 Microsoft 입력키 클릭 후 컴퓨터 부팅 인터넷 검색창에서 shift+space를 통해 한영 변환 확인 가능 만약 한영 변환이 안된다면 바탕화면 맨 우측 하단을 클릭하여 자판 배열 한국어로 변경 한국어(Microsoft 입력기)가 안보인다면 위 1번, 2번 과정 재확인 및 진행 필요 (선택)서울 시간대 설정 1. 시간대 변경 설정 창에서 시간 및 언어 - 날짜 및 시간으로 이동 표준 시간대 (UTC-08:00) 태평양 표준시 (미국과 캐나다) -> (UTC+09:00) 서울로 변경 (UTC+09:00) 서울은 밑으로 쭉 내리면 존재(UTC -부터 +순으로 정렬되어 있음) (UTC+09:00) 서울로 변경 완료된 화면 위 과정을 모두 했는데 한영 변환이 안된다면 2번의 가장 마지막 사진을 참고하세요.

MAC UTM 윈도우 한글 깨짐 해결 방법

이미지
MAC UTM 윈도우 한글 깨짐 해결 방법 MAC UTM을 이용한 가상 윈도우에서 한글 깨짐 및 한영 변경 방법에 대해 알아보겠습니다. MAC UTM 설치 방법은 여기 에서 윈도우 한영 변경 방법은 여기 를 확인하세요. 한글 언어팩 설치 1. 언어팩 설치 화면 이동 아래 윈도우 검색창에 settings 입력 좌측 리스트에서 Time & language를 마우스 클릭 중앙쪽 Language & region을 마우스 클릭 2. 언어팩 설정 Korean 옆에 미트볼 메뉴(점 3개) 마우스로 클릭, 만약 Korean이 보이지 않는 경우 아래 2-1 참고 Language options 클릭 한글팩 사용을 위한 Language pack과 한글 키보드 사용을 위한 Basic typing 설치(시간이 좀 걸릴 수 있음) Language pack, Basic typing 설치 완료 시 아래와 같음 2-1. Korean 설치 (위 2번에서 Korean 안보이는 경우 확인, 아니면 3번으로) Add a language 클릭 korea 검색 후 한국어 다운로드(Next) 클릭 3. 한글팩 설정 Language - Windows display language - English(United States) 클릭 2번을 제대로 진행하지 않았으면 아래와 같이 보이니, 이런 경우 2번 과정 재확인 및 진행 필요 2번을 제대로 진행한 경우 아래와 같이 보이며, 한국어 클릭 Sign out 클릭하여 reboot 진행 reboot 후 윈도우 검색창에 settings를 검색하면 한글이 정상적으로 나옴 4. 한글 깨짐 방지 설정 바로 위 사진을 참고하여 설정을 켜고, 시간 및 언어 - 언어 및 지역을 차례대로 클릭 한국어 오른쪽 아래 화살표 클릭 유니코드를 지원하지 않는 프로그램용 언어에서 영어(미국) -> 한국어(대한민국)으로 변경 Beta: 세계 언어 지원을 위해...