전체 글

게임 만들고 싶어요
지난번에 이어 게임을 만들어보자. 이번에 참고할 강의는 아래 강의이다. https://www.youtube.com/watch?v=rZAnnyensgs&list=PLctzObGsrjfyevwpeEVQ9pxGVwZtS7gZK&index=3 이번 강의에서는 무기를 만들어본다. 시작해보자. 먼저 무기를 간단하게 표현하자. 빈 오브젝트 Gun 을 만들어 플레이어 앞쪽에 놓는다. 해당 오브젝트 하위(자식)오브젝트로 빈 오브젝트 Gun_Graphics 를 생성하고, 그 하위 오브젝트로 큐브 오브젝트들을 추가해 총을 만든다. 큐브를 여러개 만든 다음 크기를 조절하고 돌리고 옮겨서 간단하게 총 형태로 만든다. Material 에 Gun 을 만들어서 총 재질을 추가하고 색상을 설정해준다음 큐브들에 적용하자. 지금은 총의 ..
게임을 만들어 보고싶어졌다.. 만들어 볼 만한 게임이 없을까..찾아보다가 강의를 하나 찾았다. https://www.youtube.com/watch?v=SviIeTt2_Lc&list=PLctzObGsrjfyevwpeEVQ9pxGVwZtS7gZK&index=1&pp=iAQB 탑 다운 뷰 슈팅 게임이다. 3D 상에서 플레이어 이동, 마우스 위치에 따른 방향 전환, 탄환 발사, 적 생성 후 장애물을 피해 플레이어를 따라오는 AI, 맵 생성 등, 재밌어보였다. 위 채널의 영상에서 쉽게 잘 설명해주시는 것 같다. (한글 자막도 있어서 좋다) 위 영상을 참고하여 탑다운 슈팅게임을 만들어보기로 했다. 먼저 Unity 를 설치하고 프로젝트를 3D 프로젝트로 생성했다. C# 스크립트들을 저장할 Script 폴더를 생성하..
1. 문제 상세 https://www.acmicpc.net/problem/1427 2. 문제 접근 정수를 입력받고 각 자리수를 구하여 배열에 저장한다. 이 자리수들을 내림차순으로 정렬하여 출력하자. 입력받는 수는 최대 1,000,000,000 이다. 따라서 정렬 해야 할 수의 최대 갯수는 10개이다. 정렬 할 수의 개수가 적어서 여러 정렬 알고리즘을 사용할 수 있다. 좀 더 효율 알고리즘인 퀵 정렬 알고리즘을 사용해보자. ■ 퀵 정렬 퀵 정렬 알고리즘은 합병 정렬(merge sort)과 비슷하게 분할 정복 정렬 알고리즘이다. 하지만 합병 정렬과는 다르게 배열을 비균등하게 분할한다는 차이점이 있다. 분할 과정에서는 배열을 임의의 피벗 값을 기준으로 피벗보다 작은 쪽(왼쪽) 과 큰 쪽(오른쪽), 총 2개의 ..
1. 문제 상세 https://www.acmicpc.net/problem/10989 2. 문제 접근 이번 문제에서는 조건으로 수의 갯수와 수가 자연수이고 수의 최대값이 주어졌다. 최대값이 10000인데, 이런 경우 원소들을 비교하며 정렬하는 방식이 아닌 카운팅 정렬(계수 정렬)로 더욱 빠르게 정렬해 볼 수 있다. 계수 정렬 알고리즘에 대해 정리한 글 https://dry-programming.tistory.com/111 계수 정렬 (Counting sort) 주어진 수들을 정렬해야 하는 경우, 수들이 모두 양수이고, 최대값이 정해져 있다면. 카운팅 정렬 (계수 정렬)로 더욱 빠르게 정렬해 볼 수 있다. ■ 계수 정렬? 계수 정렬 알고리즘은 비교를 하 dry-programming.tistory.com 위의..
주어진 수들을 정렬해야 하는 경우, 수들이 모두 양수이고, 최대값이 정해져 있다면. 카운팅 정렬 (계수 정렬)로 더욱 빠르게 정렬해 볼 수 있다. ■ 계수 정렬? 계수 정렬 알고리즘은 비교를 하지 않는다. 배열의 인덱스를 사용하여 숫자의 개수를 카운팅, 순서대로 출력하는 것이다. 매우 간단하다. 계수 정렬의 시간복잡도는 O(n) 으로 실행 시간은 짧지만 사용하기 위해 조건이 있다. 먼저 주어진 숫자들이 자연수이고, 최대값이 너무 크지 않아야 한다. 배열의 인덱스를 사용 할 것이기 때문에 양수만 가능하고, 최대값이 너무 커져버리면 메모리에 부담이 커진다. 이러한 조건 때문에 다른 정렬 알고리즘만큼 많이 쓰이지는 않는다. 하지만 위 조건을 충족하는 경우 다른 정렬 알고리즘보다 효율적으로 정렬할 수 있다. ■..
1. 문제 상세 https://www.acmicpc.net/problem/2751 2. 문제 접근 주어진 수들을 정렬하기 위해 합병 정렬 알고리즘을 사용해보자. 이번 문제에서 유의할 점은 시간 제한이다. 이번 문제에서 정렬 할 수들의 최대 갯수는 1,000,000개이다. 즉 시간복잡도가 O(N2)인 정렬 알고리즘을 사용한다면 제한시간을 초과하게 된다. 지금까지 알아본 버블, 선택, 삽입 정렬은 시간복잡도가 O(N2)이기 때문에 사용할 수 없다. 퀵 정렬을 사용해볼까 싶었지만 퀵 정렬에서도 최악의 경우에는 시간복잡도가 O(N2)이기 때문에 이번에는 합병 정렬을 사용해보자. ■ 합병 정렬 합병 정렬 알고리즘은 주어진 원소들을 분할, 정복, 결합 과정을 통해 정렬해가는 알고리즘이다. 분할 과정에서는 배열을 중..
Dry_p
건조한 프로그래밍