[백준] 16928번 - 뱀과 사다리게임 c++
·
Algorithm/Baekjoon
https://www.acmicpc.net/problem/16928 문제 설명뱀과 사다리 게임을 들어본 사람들이 있을 거다. 1부터 시작하여 100번 위치까지 도착하면 되는데 주사위를 굴렸을 때 도착한 위치에 사다리가 있다면 위로,도착한 위치에 뱀이 있다면 아래로 내려가면 된다.내가 주사위 수를 조작할 수 있다면 어떻게 최단 횟수로 100의 위치에 도착할 수 있을 것인가?풀이 방법BFS(너비우선탐색)으로 풀면 된다.1번 칸부터 시작하여 주사위를 굴렸을 경우 1~6까지 전부 탐색해서 최솟값을 찾는다.100번째 칸에 먼저 도착한 값이 최소경우가 된다. 예를 들어, 주어진 사다리와 뱀이 다음과 같다고 가정한다. • 사다리:  2번 → 38번, 7번 → 14번, 8번 → 31번 • 뱀: 16번 → 6번, 49번..
[프로그래머스] Lv.3 정수 삼각형 c++
·
Algorithm/Programmers
https://school.programmers.co.kr/learn/courses/30/lessons/43105 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 출처 : programmers 1층부터 n층까지 내려가는 경로중 숫자의 합이 가장 큰 경우를 찾으면 된다.아래칸으로 이동시 대각선 왼쪽이나 대각선 오른쪽으로만 이동 가능하다.ex) 7 -> 3 or 7 -> 8  풀이 방법레벨과 달리 생각보다 간단하다. dp로 풀면 된다.맨 아래층 값들을 dp에 저장한 뒤 dp[0][0]이 될 때까지 올라간다.예를 들어 위 이미지를 예시로 들면 현재 삼각형 크기가 5*5이므로 아래와 같이 dp[삼각형 세로길이]..
[프로그래머스] Lv.2 하노이의 탑 c++
·
Algorithm/Programmers
https://school.programmers.co.kr/learn/courses/30/lessons/12946 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr  대표적인 재귀문제로 3개의 막대기둥 (A,B,C)가 주어지고 A의 막대기둥에 꽂힌 원판들을 B 막대기둥까지 옮기면 된다.이때 조건이 주어진다.한번에 하나의 원판만 옮길 수 있다.큰 원판이 작은 원판 위에 있어서는 안 된다.A기둥에서 B기둥까지 모든 원판을 옮기는 최소 가짓수를 구해보자. 문제 이해 처음에 이 문제를 봤을 때는 재귀의 개념이 쉽게 들어오지 않았다. 원판을 재귀적으로 옮기는건 알겠는데 구체적으로 어떻게 옮기는 거지..? 이걸 어떻..
[프로그래머스] Lv.2 카펫 c++
·
Algorithm/Programmers
https://school.programmers.co.kr/learn/courses/30/lessons/42842 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 카펫은 테두리는 갈색, 중앙은 노란색으로 구성되어 있다.brown은 최소 8 최대 5,000이하의 자연수yellow는 1이상 2,000,000이하의 자연수카펫 가로길이 >=  카펫 세로길이ex) brown = 10, yellow = 2인 경우 카펫의 크기는 [4, 3]이 된다.     *****     *&&*     ***** 즉, brown격자의 개수와 yellow격자의 개수가 주어지면 카펫의 가로, 세로 길이를 구하면 된다. 풀이 방법완전..
[프로그래머스] Lv.2 귤 고르기 c++
·
Algorithm/Programmers
https://school.programmers.co.kr/learn/courses/30/lessons/138476 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 수확한 귤 중 k개를 골라야하며 이때 귤의 크기는 최대한 일정해야한다.즉, 귤의 크기 종류를 최소화 하면서 k개의 귤을 골라내는것이 목표다. 예를 들어, 8개의 귤을 수확했고  수확한 귤의 크기가 다음과 같다.[1, 3, 2, 5, 4 ,5, 2, 3]이때, 6개의 귤을 판매하고 싶다면 크기 1과 4를 제외한 [2 ,3 ,2 ,5, 5, 3] 귤을 상자에 담으면 귤의 크기 종류는 [2, 3, 5]로 총 3가지가 되어 최소가 된다. 풀이 방법총..
[프로그래머스] Lv.0 배열 회전시키기 c++
·
Algorithm/Programmers
문제설명 정수가 담긴 배열 numbers와 문자열 direction가 매개변수로 주어집니다. 배열 numbers의 원소를 direction방향으로 한 칸씩 회전시킨 배열을 return하도록 solution 함수를 완성해주세요.제안사항3 direction은 "left" or "right" #include #include using namespace std;vector solution(vector numbers, string direction) { vector answer; //left와 right 두가지 경우의 if문을 따로 만들었다. if(direction == "left") { for(int i=0; i  vector를 사용할 줄 알아야 하는 문제v,push_b..
[영리한 프로그래밍을 위한 알고리즘] 섹션0 순환(1)
·
Algorithm/정리
Recrusion(순환): 함수 호출 시 자기 자신을 호출하는 함수(무한루프에 빠지지 않도록 주의)Base Case : 적어도 하나의 Recrusion에 빠지지 않는 경우가 존재해야 한다.Recrusive Case : Recrusion을 반복하다 보면 결국 Base Case로 수렴해야 한다.ex) n!, X^n, 피보나치 수(Fibonacci numbers), 최대공약수(Euclid Method)   //n! (1부터 n까지 모든 정수 곱하기)int factorial(int n){ if (n == 1) //base case return 1; else return n*factorial(n-1); //recrusive case}만약 n이 6이라면6*factorial(6-1) -> 6*5*facto..