UTM으로 MAC M1, M2에 윈도우 11 ARM 설치

이미지
UTM으로 윈도우 설치하기 1. UTM 다운로드 및 설치 UTM은 macOS 및 iOS 환경에서 Virtual Machine을 실행할 수 있도록 설계된 소프트웨어 입니다. Windows, Linux, macOS, Android 등 다양한 운영 체제를 가상 머신에서 실행할 수 있고, ARM 및 x86 아키텍쳐러르 모두 지원하여 M1, M2 기반의 Mac에서도 x86 운영 체제를 실행할 수 있어 UTM을 다운받아 진행하겠습니다. 링크: https://mac.getutm.app/ 사이트에서 다운로드를 진행합니다. 다운 받은 UTM.dmg 파일을 클릭하여 설치를 진행합니다. (UTM 아이콘을 마우스로 누른 상태에서 Application 아이콘에 끌어다 놓으세요) Space + Enter 후 utm을 검색하여 UTM이 나오는지 확인합니다. (설치 완료 확인) 2. VHDX 파일 다운로드 VHDX란 Virtual Hard Disk Extended의 약자로 가상 디스크 파일입니다. UTM이라는 가상 머신에서 사용하는 운영 체제 데이터를 저장하기 위한 용도로 사용합니다. 가상 디스크는 특정 운영 체제 환경을 여러 개 운용할 때, 각각의 가상 디스크로 별도 관리하면 호스트 시스템으로 파일의 이동도 용이하며, 백업과 복원 등도 매우 간단하기에 VHDX 파일 다운받아 진행하겠습니다. 링크:  https://www.microsoft.com/en-us/windowsinsider/register 위와 같이 Windows Insider에 가입하라는 안내가 나온다면  우선 MS 계정으로 로그인을 진행합니다. 이후  https://www.microsoft.com/en-us/windowsinsider/getting-started 1. Register를 누른 후, 빨간색 네모를 클릭하여 가입을 진행합니다. (저는 이미 가입되어 있어 already registered라고 나오네요) VHDX 파일을 다운받기 위한 Windows Insider에 가입

[Docker] Ubuntu Nvidia-Docker 설치 방법

Ubuntu Nvidia-Docker 설치 Ubuntu Nvidia-Docker 설치 repository & GPG Key 설정 distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \ && curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - \ && curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list Copy Nvidia-Docker 설치 sudo apt update sudo apt install -y nvidia-docker2 Copy Docker 서비스 재시작 sudo systemctl restart docker Copy 참고문헌 [1]   https://dongle94.github.io/docker/docker-nvidia-docker-install/

[Docker] Ubuntu Docker 설치 방법

Ubuntu Nvidia-Docker 설치 Ubuntu Docker 설치 apt package 설정 package를 업데이트하고 repository 사용을 위해 필요한 package 설치합니다. sudo apt update sudo apt install ca-certificates curl gnupg lsb-release Copy Docker Official GPG Key 등록 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg Copy stable repository 등록 echo \   "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \   $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null Copy Docker 설치 sudo apt-get install docker-ce docker-ce-cli containerd.io Copy Docker 설치 확인 docker --version Copy sudo 없이 docker 실행 방법 Docker 데몬은 기본적으로 root 권한으로 실행되기 때문에 root 권한이 없으면 아래와 같은 문구가 나옵니다. permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Head "http://%2Fvar%2

[Algorithm] Dijkstra (다익스트라 알고리즘) 이론 설명

이미지
다익스트라 알고리즘 Overview 그래프 최단 경로를 찾는 알고리즘으로서, 특정한 하나의 정점 노드에서 다른 모든 정점 노드로 가는 최단 경로를 구하는 알고리즘입니다. ( 시간복잡도: $O(V^{2}$) ) 다익스트라 알고리즘은 그리디와 동적 프로그래밍 알고리즘 모두로 보고 있습니다.  왜 둘다로 여기는지는 참고 사이트 와 아래 Introduce를 확인해주세요. * 다익스트라 알고리즘은 음의 간선이 존재하지 않는 경우 사용할 수 있습니다. Introduce 카카오나 네이버 맵 등에서 출발지부터 도착지까지 가장 빠른 경로를 어떻게 찾아서 알려줄까요? 이럴 때 다익스트라 알고리즘을 사용합니다. 다익스트라 알고리즘은 컴퓨터 과학자인 Edsger W.Dijkstra로부터 1956년에 만들어진 그래프에서 단일 최단 경로를 찾는 알고리즘입니다. 이는 특정 정점으로부터 연결된 모든 정점의 최단 경로를 찾는 알고리즘이란 뜻입니다. 이 과정에서 도착 정점 뿐만 아니라 다른 모든 정점의 최단 경로까지 찾습니다.  즉, 매번 최단 경로의 정점을 선택해 탐색 반복하며(그리디 알고리즘 성격), 정점과 정점 사이 경로 갱신을 위해 이전에 구했던 경로 값을 사용합니다. (다이나믹 알고리즘 성격)  다익스트라 알고리즘은 유방향(directed)과 무방향(undirected)에서 양의 간선인 경우 동작 가능합니다. 유방향 (directed): 방향이 있는 간선을 가지는 그래프 (간선은 단방향 관계를 나타냄) 무방향 (undirected): 방향이 없는 간선을 가지는 그래프 (간선은 양방향 관계를 나타냄) Algorithm 1. 출발 정점 설정 (출발 정점 최소 비용은 0으로 설정, 자기자신으로 이동하는 비용이기 때문) 2. 정점 방문 여부를 체크하는 리스트 생성 (visited list) 3. 최단 거리 리스트 생성 (dijkstra list) 4. 선택된 정점의 인접한 정점들 중, 아직 방문하지 않았고 비용이 가장 적은 정점 선택 5. 4번

[프로그래머스] 3xn 타일링 (python)

이미지
 문제 설명 문제 링크:  https://school.programmers.co.kr/learn/courses/30/lessons/12902 Idea 풀이 방법이 직관적으로 떠오르지 않아 정의된 문제의 N 값에 따른 답안을 구하며 규칙을 찾아보기로 했습니다. 우선 2x1인 직사각형 타일을 이용하여 3xN인 바닥을 채워야 합니다.  다만, 3xN 바닥의 세로 길이가 3이기 때문에 2x1 직사각형은 반드시 누워져서 들어가는 경우가 발생합니다. 이는 N이 홀수인 경우엔 2x1 직사각형 타일을 이용하여 3xN 바닥을 채울 수 없음을 의미합니다. (아래 그림 참고) 3x3, 3x5인 바닥의 경우 위 이유로 규칙은 N이 짝수인 경우에만 찾도록 하겠습니다. 1. 규칙 찾기 N=0: 0개, 타일을 둘 수 없음 N=2: 3개, 아래 사진 참고 N=4: 11개, (3*3 + 2)   - N=2일 때 있었던 3개의 경우에 다시 3가지의 경우의 수들 추가.   - N=4일 때 특수한 형태의 모양 생성 (그림 맨 하단 참고)  N=6: 41개, (3*11 + 2*3 + 2)   - N=4일 때 있었던 경우에 다시 3가지의 경우의 수들 추가.   - N=4일 때 있었던 특수한 형태의 모양에 대한 예외 경우의 수 추가 (그림 우측 참고)      > 특수한 형태의 모양은 "앞, 뒤"에 따라 다른 경우의 수를 만들 수 있습니다.    - N=6일 때 특수한 형태의 모양 생성 (그림 맨 우하단 참고)  N=8: 153개, (3*41 + {6*3+2*2} + 2*3 + 2)   - N=6일 때 있었던 경우에 다시 3가지의 경우의 수들 추가.   - N=6일 때 있었던 특수한 형태의 모양에 대한 예외 경우의 수 추가 (그림 우상단 참고)      > 특수한 형태의 모양은 "앞, 뒤"에 따라 다른 경우의 수를 만들 수 있습니다.    - N=4일 때 있었던 특수한 형태의 모양에 대한 예외 경우의 수 추가 (그림 우중