호우동의 개발일지

Today :

article thumbnail
[C++] 백준/BOJ - 1865 : 웜홀
Algorithm/BOJ 2023. 4. 17. 23:55

문제 이해 단계 https://www.acmicpc.net/problem/1865 1865번: 웜홀 첫 번째 줄에는 테스트케이스의 개수 TC(1 ≤ TC ≤ 5)가 주어진다. 그리고 두 번째 줄부터 TC개의 테스트케이스가 차례로 주어지는데 각 테스트케이스의 첫 번째 줄에는 지점의 수 N(1 ≤ N ≤ 500), www.acmicpc.net N개의 지점과 그 지점 사이에는 M개의 도로와 W개의 웜홀이 존재한다. 여기서 도로는 양방향이고 웜홀은 단방향이다. 도로와 웜홀의 정보는 공통적으로 (시작 지점, 도착 지점, 가는 시간)으로 들어온다. 웜홀은 시작했을 때보다 도착했을 때 시간이 거꾸로 가게 된다. 한 지점에서 출발하여 다시 출발했던 지점을 돌아올 때, 출발했을 때보다 시간이 돌아가있는 것이 가능한가?를..

article thumbnail
[C++] 백준/BOJ - 1937 : 욕심쟁이 판다
Algorithm/BOJ 2023. 4. 16. 17:15

문제 이해 단계 https://www.acmicpc.net/problem/1937 1937번: 욕심쟁이 판다 n × n의 크기의 대나무 숲이 있다. 욕심쟁이 판다는 어떤 지역에서 대나무를 먹기 시작한다. 그리고 그 곳의 대나무를 다 먹어 치우면 상, 하, 좌, 우 중 한 곳으로 이동을 한다. 그리고 또 그곳에 www.acmicpc.net NxN 크기의 맵에 대나무가 각 칸에 존재한다. 대나무는 정수값이다. 판다가 이걸 먹는데, 먹고 난 이후에는 상하좌우로 움직인다. 판다는 움직일 때, 먹은 그 칸의 대나무보다 많은 칸으로밖에 이동하지 못한다. 맨 처음 판다를 놓을 수 있는 칸을 정할 수 있을 때, 판다가 최대한 많이 움직일 수 있는 칸의 수를 구하는 문제 문제 접근 단계 일단 맵의 크기는 최대 500x5..

[C++] 백준/BOJ - 20924 : 트리의 기둥과 가지
Algorithm/BOJ 2023. 4. 16. 14:50

문제 이해 단계 https://www.acmicpc.net/problem/20924 노드의 개수 N과 루트 번호 R이 들어온다. 그리고 N-1개의 노드 정보가 주어지는데, (a, b, c) -> a번 노드와 b번 노드가 연결되어 있는데 길이는 c이다. 그리고 기가 노드라는 것이 존재하는데, 이는 루트노드에서 시작했을 때 최초로 자식 노드가 2개 이상인 노드이다. 또는, 리프 노드가 단 1개인 경우엔 리프 노드인 동시에 기가 노드이다. 그리고 루트노드인 동시에 기가노드 또한 가능하다. 루트 노드 ~ 기가노드까지를 기둥이라고 하고 기가노드 ~ 임의의 루프노드를 가지라고 할 때, 기둥 길이의 합을 구하고, 가지 중 가장 길이가 긴 것을 출력해라. 문제 접근 단계 일단 조건부터 보면 노드는 최대 200,000개..

article thumbnail
[OS] 다중 쓰레드 모델(Multi-Thread Model) 종류

다중 스레드 모델(MultiThreading Model) 수준 차이에 따른 스레드 지원 사용자 스레드(user threads) : 사용자 수준에서 지원하는 스레드 커널 위에서 지원되고 커널의 지원 없이 관리 커널 스레드(ker-nel threads) : 커널 수준에서 제공되는 스레드 커널 스레드는 운영체제에 의해 직접 지원되고 관리 거의 모든 현대 운영체제들은 커널 스레드를 지원 궁극적으로 사용자 스레드와 커널 스레드에는 어떤 연관 관계가 존재해야 함. 다대일 모델(Many-to-One Model) 많은 사용자 수준 스레드가 하나의 커널 스레드를 사상함 장점 스레드 관리는 사용자 공간의 스레드 라이브러리에 의해 행해짐 → 효율적 단점 한 스레드가 봉쇄형 시스템 콜할 경우, 전체 프로세스가 봉쇄 한 번에 ..

[C++] 백준/BOJ - 21940 : 가운데에서 만나기 (다익스트라 풀이)
Algorithm/BOJ 2023. 4. 15. 15:41

문제 이해 단계 https://www.acmicpc.net/problem/21940 21940번: 가운데에서 만나기 위 조건을 만족하는 도시 $X$의 번호를 출력한다. 만약 가능한 도시 $X$가 여러 개인 경우는 도시의 번호를 오름차순으로 출력한다. www.acmicpc.net 정점과 간선 정보가 주어진다. 각 간선은 단방향으로 주어지고, 간선에는 시간이라는 가중치가 존재한다. 여기서 선택해야 하는 것은 왕복 시간(목적지로 갔다가 다시 돌아오는데 드는 시간)이 가장 많이 드는 사람의 시간을 최소화하는 도시를 선택하는 것이다. 도시의 개수 N과 간선의 개수 M, 그리고 사람 수 K와 각 사람이 사는 도시 정보가 주어진다. 왕복 시간이 가장 많이 드는 사람의 시간을 최소화하는 도시를 출력하고, 만약 여러 개..

article thumbnail
[C++] 백준 13019 - A를 B로
Algorithm/BOJ 2023. 4. 15. 12:43

문제 이해 단계 https://www.acmicpc.net/problem/13019 13019번: A를 B로 첫째 줄에 A, 둘째 줄에 B가 주어진다. 두 문자열의 길이는 같으며, 길이는 50을 넘지 않는다. 또, 알파벳 대문자로만 이루어져 있다. www.acmicpc.net 대문자 알파벳으로 이루어진 문자열 A와 B가 입력으로 들어온다. 문자열 A를 B로 바꾸는 것이 목표. 할 수 있는 연산은 알파벳 하나를 골라 가장 앞으로 보내는 것이다. 이때 최소 몇 번 만에 만들 수 있는지 구하는 문제 문제 접근 단계 일단 입력으로 들어오는 문자열의 길이가 50이 넘지 않는다. 따라서 시간초과는 크게 신경 쓰지 않아도 될 것 같다. 연산에서 중간에 있는 문자를 골라도 상관이 없다. 하지만 무조건 가장 앞으로 보내..

article thumbnail
[C++] 백준 22945 - 팀 빌딩
Algorithm/BOJ 2023. 4. 13. 22:32

문제 이해 단계 https://www.acmicpc.net/problem/22945 22945번: 팀 빌딩 능력치가 다 다른 개발자 $N$명이 팀 빌딩을 위해 한 줄로 서있다. 하나의 팀을 만들기 위해서는 개발자 2명이 반드시 모여야 한다. 개발자 A와 개발자 B가 팀을 만들 때 팀의 능력치는 아래와 같 www.acmicpc.net 능력치가 다 다른 N명이 입력으로 들어온다. 이 중에서 2명을 뽑아서 값을 만들 때, 값을 구하는 공식은 아래와 같다. (A와 B 사이에 존재하는 다른 사람 수)*min(A, B) 이러한 조건일 때 나올 수 있는 값의 최대치를 구하는 문제 문제 접근 단계 문제풀이를 위해 조건부터 살펴보자. 들어올 수 있는 사람 N은 최대 100,000까지 가능하고, 능력치는 10,000까지 ..

article thumbnail
[Unity 3D/VR] XR Interaction Toolkit 커스텀 컨트롤러 모델링

XR Origin → LeftHand Controller 하위 오브젝트로 큐브, 구 등 원하는 대로 배치하여 커스텀 게임 실행 시 자동으로 모델링 되도록 하기 프리팹화 만들어둔 모델을 프로젝트 창으로 드래그하여 프리팹화함 기존에 Hierarchy에 있던 Model들은 삭제 LeftHand Controller와 rightHand Controller에 있던 Model Prefab에 프리팹을 넣음 연결된 프리팹을 자동으로 게임 오브젝트로 만들어서 배치해 줌 결과 1 게임 실행 시 자동으로 커스텀했던 모델이 XR Origin과 붙어서 나오는 것을 확인 가능 결과 2 VR 움직임이 잘 된다.