2023/06 10

[프로그래머스] 의상 | C#

[ 의상 ] https://school.programmers.co.kr/learn/courses/30/lessons/42578 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 코니는 매일 다른 옷을 조합하여 입는것을 좋아합니다. 예를 들어 코니가 가진 옷이 아래와 같고, 오늘 코니가 동그란 안경, 긴 코트, 파란색 티셔츠를 입었다면 다음날은 청바지를 추가로 입거나 동그란 안경 대신 검정 선글라스를 착용하거나 해야합니다. 종류 이름 얼굴 동그란 안경, 검정 선글라스 상의 파란색 티셔츠 하의 청바지 겉옷 긴 코트 제한사항 코니는 각 종류별로 최대 1..

[프로그래머스] 가장 큰 수 | C#

[ 가장 큰 수 ] https://school.programmers.co.kr/learn/courses/30/lessons/42746 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 수는 6210입니다. 0 또는 양의 정수가 담긴 배열 numbers가 매개변수로 주어질 때, 순서를 재배치하여 만들 수 있..

[자료구조] 해시 테이블(Hash Table)

[ 해시 테이블 (Hash Table) ] 키(key) - 값(value) 쌍을 저장하는 배열 기반의 구조. 특정 키를 사용해 값을 검색하고 삭입하거나, 삭제할 수 있다. 해시 함수(hash function): 주어진 키를 해시 코드(hash cade)로 변환하는 함수 배열(Array): 해시 테이블의 버킷을 저장. 각 배열 요소는 버킷을 나타내며, 여러 개의 키-값 쌍(Key-Value Pair)을 저장할 수 있다. 버킷(Bucket): 해시테이블의 각 배열 요소. 버킷은 한 개 이상의 키-값 쌍(Key-Value-Pair)을 저장할 수 있다. 데이터를 저장하거나 검색할 수 있는 인터페이스가 제공된다. 해시 테이블에서 가장 중요한 점은 해시 함수(hash function)와 배열(array)을 이용한다..

[프로그래머스] 게임 맵 최단거리 | C#

[ 올바른 괄호 ] https://school.programmers.co.kr/learn/courses/30/lessons/1844 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 ROR 게임은 두 팀으로 나누어서 진행하며, 상대 팀 진영을 먼저 파괴하면 이기는 게임입니다. 따라서, 각 팀은 상대 팀 진영에 최대한 빨리 도착하는 것이 유리합니다. 지금부터 당신은 한 팀의 팀원이 되어 게임을 진행하려고 합니다. 다음은 5 x 5 크기의 맵에, 당신의 캐릭터가 (행: 1, 열: 1) 위치에 있고, 상대 팀 진영은 (행: 5, 열: 5) 위치에 있는 ..

[프로그래머스] 타겟 넘버 | C#

[ 타겟 넘버 ] 문제 설명 n개의 음이 아닌 정수들이 있습니다. 이 정수들을 순서를 바꾸지 않고 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다. -1+1+1+1+1 = 3 +1-1+1+1+1 = 3 +1+1-1+1+1 = 3 +1+1+1-1+1 = 3 +1+1+1+1-1 = 3 사용할 수 있는 숫자가 담긴 배열 numbers, 타겟 넘버 target이 매개변수로 주어질 때 숫자를 적절히 더하고 빼서 타겟 넘버를 만드는 방법의 수를 return 하도록 solution 함수를 작성해주세요. 제한사항 주어지는 숫자의 개수는 2개 이상 20개 이하입니다. 각 숫자는 1 이상 50 이하인 자연수입니다. 타겟 넘버..

[프로그래머스] 점프와 순간이동 | C#

[ 점프와 순간이동 ] 문제 설명 OO 연구소는 한 번에 K 칸을 앞으로 점프하거나, (현재까지 온 거리) x 2 에 해당하는 위치로 순간이동을 할 수 있는 특수한 기능을 가진 아이언 슈트를 개발하여 판매하고 있습니다. 이 아이언 슈트는 건전지로 작동되는데, 순간이동을 하면 건전지 사용량이 줄지 않지만, 앞으로 K 칸을 점프하면 K 만큼의 건전지 사용량이 듭니다. 그러므로 아이언 슈트를 착용하고 이동할 때는 순간 이동을 하는 것이 더 효율적입니다. 아이언 슈트 구매자는 아이언 슈트를 착용하고 거리가 N 만큼 떨어져 있는 장소로 가려고 합니다. 단, 건전지 사용량을 줄이기 위해 점프로 이동하는 것은 최소로 하려고 합니다. 아이언 슈트 구매자가 이동하려는 거리 N이 주어졌을 때, 사용해야 하는 건전지 사용량..

[프로그래머스] 다리를 지나는 트럭 | C#

[ 다리를 지나는 트럭 ] 문제 설명 트럭 여러 대가 강을 가로지르는 일차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 알아내야 합니다. 다리에는 트럭이 최대 bridge_length대 올라갈 수 있으며, 다리는 weight 이하까지의 무게를 견딜 수 있습니다. 단, 다리에 완전히 오르지 않은 트럭의 무게는 무시합니다. 예를 들어,트럭 2대가 올라갈 수 있고 무게를 10kg까지 견디는 다리가 있습니다. 무게가 [7, 4, 5, 6]kg인 트럭이 순서대로 최단 시간 안에 다리를 거너려면 다음과 같이 건너야 합니다. 경과 시간 다리를 지난 트럭 다리를 건너는 트럭 대기 트럭 0 [] [] [7, 4, 5, 6] 1 ~ 2 [] [7] [4, 5, 6] 3 [7]..

[자료구조] 스택(Stack), 큐(Queue)

[ 스택(Stack) ] 데이터를 차곡차곡 쌓아 올린 형태의 자료구조 한쪽 끝에서만 삽입과 삭제가 이루어지는 후입선출(LIFO, Last-In-First-Out) 구조 스택은 책을 쌓아놓은 것과 유사한 개념으로 이해하면 된다. 책을 쌓아놓을 때 새로운 책을 얹거나 또는 있는 책을 뺄 때는 맨 위부터 접근이 가능한 것처럼! 스택에서는 Push, Pop 이 두 가지만 알면 된다! Push(삽입): 스택에 새로운 항목을 추가하는 연산, 스택의 맨 위에 배치. Pop(제거): 스택에서 가장 위에 있는 항목을 제거하고 반환하는 연산. [ 특징 ] 후입선출(LIFO): 가장 최근에 추가된 항목이 가장 먼저되는 구조. 제한된 접근: 스택은 가장 위의 항목만 접근할 수 있으며, 데이터를 추가하거나 제거할 때는 항상 가..

[자료구조] 배열, 연결 리스트

[ 자료구조 ] 데이터 값의 모임 -> 메모리 공간을 효율적으로 사용해야 할 때 필요 [ 배열(Array) ] 같은 종류의 데이터를 순차적으로 저장하는 자료 구조 고정된 크기를 갖고 있음 인덱스(Index) 번호로 데이터에 접근할 수 있다. 요소(element): 배열을 구성하는 각각의 값 인덱스(Index): 데이터를 기록할 경우 그 데이터의 이름, 데이터의 크기 등의 속성과 그 기록 장소 등을 표로 표시하는 것. 0부터 시작, 배열의 크기 - 1까지 사용할 수 있다. -> 참조용 데이터 [ C# 배열 선언 및 초기화 ] int[] arr = new int[] { 0, 1, 2 }; int[] arr2 = { 0, 1, 2 }; int[] arr3; arr3 = new int[] { 0, 1, 2 };..

[알고리즘] 깊이 우선 탐색(DFS), 너비 우선 탐색(BFS)

[ 깊이 우선 탐색 | DFS(Depth-First Search) ] 루트 노드(또는 다른 임의의 노드)에서 시작해서 다음 분기로 넘어가기 전에 해당 분기를 완벽하게 탐색하는 방식 -> 최대한 깊이 내련 후, 더이상 깊이 갈 곳이 없을 경우 옆으로 이동 [ 특징 ] 모든 노드를 방문해야 하는 경우 사용. 깊이 우선 탐색(DFS)가 너비 우선 탐색(BFS)보다 조금 더 간단 검색 속도 자체는 너비 우선 탐색(BFS)에 비해 느림 스택(stack) 또는 재귀함수로 구현 [ 코드 ] public class Node { public string Name { get; set; } public List Children { get; set; } public bool Visited { get; set; } public..