코딩 공부 29

[프로그래머스] 타겟 넘버 | 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..

[프로그래머스] 달리기 경주 | C#

[ 달리기 경주 ] 문제 설명 얀에서는 매년 달리기 경주가 열립니다. 해설진들은 선수들이 자기 바로 앞의 선수를 추월할 때 추월한 선수의 이름을 부릅니다. 예를 들어 1등부터 3등까지 "mumu", "soe", "poe" 선수들이 순서대로 달리고 있을 때, 해설진이 "soe"선수를 불렀다면 2등인 "soe" 선수가 1등인 "mumu" 선수를 추월했다는 것입니다. 즉 "soe" 선수가 1등, "mumu" 선수가 2등으로 바뀝니다. 선수들의 이름이 1등부터 현재 등수 순서대로 담긴 문자열 배열 players와 해설진이 부른 이름을 담은 문자열 배열 callings가 매개변수로 주어질 때, 경주가 끝났을 때 선수들의 이름을 1등부터 등수 순서대로 배열에 담아 return 하는 solution 함수를 완성해주세..

[백준 코딩테스트] 2739번, 10950번 | C#, Python, C

[ 2739번 ] [ C# ] int num = int.Parse(Console.ReadLine()); for(int i = 1; i < 10; i++) Console.WriteLine(num + " * " + i + " = " + num * i); [ Python ] num = int(input()) for i in range(1, 10): print(str(num) + " * " + str(i) + " = " + str((num) * i)) 파이썬은 문자열과 숫자를 같이 출력하려면 숫자를 문자열로 변환해야 한다. [ C ] #include int main(){ int num; scanf("%d", &num); for(int i = 1; i < 10; i++) { printf("%d * %d = %d\..

[백준 코딩테스트] 2480번 | C, C#, Python

[ 2480번 ] [ C# ] string[] ss = Console.ReadLine().Split(); int a = int.Parse(ss[0]); int b = int.Parse(ss[1]); int c = int.Parse(ss[2]); int win; if(a == b || a == c){ if(b == c) win = 10000+a*1000; else win = 1000+a*100; } else if(b == c){ if(a == b) win = 10000 +b* 1000; else win = 1000+b*100; } else { if (a > b && a > c) win = a * 100; else if(b>a&& b> c) win = b *100; else win = c * 100; } C..