본문 바로가기

프로그래밍/Algorithm109

방향 배열(Direction Array)로 간편하게 상하좌우 배열 이동하기 방향 배열 사용하기 2차원 좌표상에서 한 점을 기준으로 상하좌우로 이동하는 좌표를 구할 때 코드를 작성하는 방법이다. BFS, 다익스트라, A* 알고리즘에 자주 등장한다. 이번 기회에 익숙해지도록 하자. 예제 코드 using System; public class Program { public static void Main() { int[] dirY = new int[] { -1, 1, 0, 0 }; int[] dirX = new int[] { 0, 0, -1, 1 }; int[,] array = new int[3, 3] { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } }; int posY = 1; int posX = 1; Console.WriteLine($" 초기 위치 : {arr.. 2023. 8. 25.
C#으로 미로 만들기 알고 가야 할 것들 기본적으로 게임은 메인 루프가 하나 있고 메인 루프를 돌며 게임을 올바르게 동작하기 위한 여러 로직을 처리한다. 메인 루프는 크게 세 가지로 분류된다. 유저의 입력 감지 유저의 입력과 기타 로직을 처리 렌더링 (화면에 뿌려줌) 본 포스팅은 미로를 만들고 출력하는 것이 목적이기에 렌더링과 연관된 코드를 작성하려 한다. 렌더링 코드를 작성하기 전에 프레임(Frame)을 알아야 한다. 게임을 즐겨하는 사람이라면 "FPS"에 대해서 한 번쯤은 들어봤을 것이다. 우리가 플레이하는 게임 또는 영화와 같은 영상물은 연속된 사진들의 모음인데, 이 각각의 사진을 프레임이라고 부른다. FPS(Frames Per Second)란 초당 몇 개의 프레임(사진)을 화면에 뿌리는지 나타내는 수치이다. 일반적으로.. 2023. 8. 24.
[프로그래머스 Programmers] 네트워크 문제 설명 네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미합니다. 예를 들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어 있고, 컴퓨터 B와 컴퓨터 C가 직접적으로 연결되어 있을 때 컴퓨터 A와 컴퓨터 C도 간접적으로 연결되어 정보를 교환할 수 있습니다. 따라서 컴퓨터 A, B, C는 모두 같은 네트워크 상에 있다고 할 수 있습니다. 컴퓨터의 개수 n, 연결에 대한 정보가 담긴 2차원 배열 computers가 매개변수로 주어질 때, 네트워크의 개수를 return 하도록 solution 함수를 작성하시오. 제한사항 컴퓨터의 개수 n은 1 이상 200 이하인 자연수입니다. 각 컴퓨터는 0부터 n-1인 정수로 표현합니다. i번 컴퓨터와 j번 컴퓨터가 연결되어 있으면 computers.. 2023. 8. 24.
그래프(Graph)와 트리(Tree) 그래프(Graph)란 무엇인가? 그래프는 노드(하나의 점)와 노드 간을 연결하는 간선으로 구성된 자료구조이다. 이를 통해 연결된 노드 간의 관계를 표현할 수 있다. 그래프의 특징 그래프는 순환 혹은 비순환 구조를 이룬다. 그래프는 방향이 있는 그래프와 방향이 없는 그래프가 있다. 루트 노드의 개념이 없다 / 부모-자식 관계라는 개념이 없다. 2개 이상의 경로가 가능하다. (무방향, 방향, 양방향 가능) 그래프는 네트워크 모델이다. 트리(Tree)란 무엇인가? 트리는 그래프와 같이 노드와 노드 간을 연결하는 간선으로 구성된 자료구조이다. 그러나 트리는 그래프 중에서도 특수한 케이스에 해당하는 자료구조로 두 개의 노드 사이에 반드시 1개의 경로만을 가지며 사이클이 존재하지 않는 방향 그래프이다. 이러한 특성.. 2023. 8. 23.
[프로그래머스 Programmers] 소수 만들기 문제 설명 주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하려고 합니다. 숫자들이 들어있는 배열 nums가 매개변수로 주어질 때, nums에 있는 숫자들 중 서로 다른 3개를 골라 더했을 때 소수가 되는 경우의 개수를 return 하도록 solution 함수를 완성해주세요. 제한사항 nums에 들어있는 숫자의 개수는 3개 이상 50개 이하입니다. nums의 각 원소는 1 이상 1,000 이하의 자연수이며, 중복된 숫자가 들어있지 않습니다. 소수 만들기 소수 만들기 문제를 풀어보자. 이 문제를 풀기 위해서 순열과 조합에 대해서 먼저 공부하였다. n개의 배열에서 r개의 원소를 선택하는 조합 작성하면 나머지는 간단하게 구현이 가능하다. 작성 코드 using System; class Sol.. 2023. 8. 21.
순열(Permutation)과 조합(Combination) 순열(Permutation)이란? 순열이란, 쉽게 말해서 순서를 정해서 나열하는 것을 말한다. 서로 다른 n개에서 r개를 택하여 일렬로 나열할 때, 첫 번째 자리에 올 수 있는 것은 n가지이고, 그 각각에 대하여 두 번째 자리에 올 수 있는 것은 첫 번째 자리에서 선택된 1개를 제외한 (n - 1) 가지, 세 번째 자리에 올 수 있는 것은 앞에서 선택된 2개를 제외한 (n - 2) 가지이다. 이와 같은 방법으로 계속하며 r번째 자리에 올 수 있는 것은 이미 선택된 (r - 1) 개를 제외한 n - (r - 1) = n - r + 1(가지) 이다. 순열에서 P란 Permutation의 첫글자를 줄여서 P로 나타낸다. nPr을 계산하는 방법은 배열의 순서를 생각하여 첫 번째에는 나올 수 있는 경우의 수가 n.. 2023. 8. 21.