본문 바로가기
반응형

프로그래밍/Algorithm110

[프로그래머스 Programmers] 배달 문제 설명 N개의 마을로 이루어진 나라가 있습니다. 이 나라의 각 마을에는 1부터 N까지의 번호가 각각 하나씩 부여되어 있습니다. 각 마을은 양방향으로 통행할 수 있는 도로로 연결되어 있는데, 서로 다른 마을 간에 이동할 때는 이 도로를 지나야 합니다. 도로를 지날 때 걸리는 시간은 도로별로 다릅니다. 현재 1번 마을에 있는 음식점에서 각 마을로 음식 배달을 하려고 합니다. 각 마을로부터 음식 주문을 받으려고 하는데, N개의 마을 중에서 K 시간 이하로 배달이 가능한 마을에서만 주문을 받으려고 합니다. 다음은 N = 5, K = 3인 경우의 예시입니다. 위 그림에서 1번 마을에 있는 음식점은 [1, 2, 4, 5] 번 마을까지는 3 이하의 시간에 배달할 수 있습니다. 그러나 3번 마을까지는 3시간 이내로.. 2023. 8. 29.
방향 배열(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.