[JAVA] 프로그래머스 리코쳇 로봇
·
Algorithm/Programmers
import java.util.LinkedList;import java.util.Queue;class Solution { public int solution(String[] board) { int[] goal = new int[2]; int[] start = new int[2]; Queue nextNode = new LinkedList(); boolean[][] visited = new boolean[board.length][board[0].length()]; for (int i = 0; i = board.length || newY = board[0].length() || board[newX].charAt(ne..
[Java] 프로그래머스 멀리뛰기
·
Algorithm/Programmers
//dfs으로 하면 시간초과// % 1234567이니까 무조건이다./*1121123111211241111112121211225111111112112112112111221122212611111111112111211121112111211112211211221211122222dp[n] = dp[n-1] + dp[n-2]*/class Solution { public long solution(int n) { long[] dp = new long[2001]; dp[0] = 0; dp[1] = 1; dp[2] = 2; for(int i = 3; i  풀이1. 우선 % 1234567을 한다는건 경우의수가 엄청나다는 것이니 탐색으로..
[java] 백준 11047 동전 0
·
Algorithm/Baekjoon
//동전 종류 N//동전 가치의 합 K//동전의 개수 나와있지 않지만 많음?//내림차순으로 최대한 금액넣기import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int N = in.nextInt(); int K = in.nextInt(); int[] coins = new int [N]; for(int i = 0; i = 0; i--) { result += K / coins[i]; K = K % coins[i]; if ..
[C++] 백준 1149 RGB거리
·
Algorithm/Baekjoon
#include #include #include #include using namespace std;int main() { int n; cin >> n; vector house(3, 0); for (int i = 0; i > color[0] >> color[1] >> color[2]; result[0] = min(house[1] + color[0], house[2] + color[0]); result[1] = min(house[0] + color[1], house[2] + color[1]); result[2] = min(house[0] + color[2], house[1] + color[2]); house[0] = result[0];..
[C++] 백준 2156 포도주 시식
·
Algorithm/Baekjoon
#include #include #include #include using namespace std;//포도주를 선택하면 다 마시고 원래 위치에 놓는다.//1~n까지 번호//n개의 포도주// //연속으로 놓여있는 3잔을 모두 마실 수는 없다.//가장 많은 양의 포도주를 마셔라.//1이상 10000이하의 n//입력//첫째줄 n개//둘째줄 n + 1번째까지 포도주의 양 0이상 1000이하int main() { int n; cin >> n; vector grape(n, 0); vector dp(n, 0); for (int i = 0; i > grape[i]; } //dp0 grape0 //dp1 grape1 + dp0 //dp2 grape2 + dp0(grape..
[C++] 백준 1912 연속합
·
Algorithm/Baekjoon
#include #include using namespace std;int main(){ int result = -1001; vector dp; int n; cin >> n; for (int i = 0; i > temp; dp.push_back(temp); } result = max(dp[0], result); for (int i = 1; i  풀이1. 우선 결과 값을 쌓아가면서 먼저 계산을 해본다. dp적 사고를 통해 이전 값+현재값과 현재값을 비교를해준다.2. max를 계속 업데이트하면서 가장 큰 값을 저장한다.3. 현재 값보다 쌓아온 값이 더 작으면 갱신된다. 느낀점아직도 dp적사고가 되지않는 것 같다. 좀 더 점화식을 세우는 것을 연습해야겠다. https://www.acmicpc.net/prob..