프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr # 핵심 DP 맨 처음에 DFS로 풀려고 했는데 정확성은 맞았으나 효율성에 대해서 한문제도 통과를 못한다는 빛나는 성과를 보였기에 다른 접근방법을 찾아야만 했다... 솔직히 혼자서는 못풀었고 문제 해설을 적극 참고한 덕분에 겨우 풀 수 있었다.. (참고: https://tech.kakao.com/2022/07/13/2022-coding-test-summer-internship/ ) 어떻게든 기존 아이디어로 풀어보려고 시도하다보니 코드가 난잡해지고 덕지덕지 조건문만 붙는데다가 결국 또 못풀었다 한참 안풀릴 때에..
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr # 핵심 Set을 활용하자!! .. 또 결국 혼자 못풀었다.... 진짜 다 된 것 같았는데 접근 방식이 조금 잘못됐었다. 내 생각으로는 이런 그림처럼 BFS같이 최단 거리를 보장하는 것 같은 방식을 사용하면 되지 않을까? 싶었는데 아쉽게도 이게 아니었다. 이런 느낌으로 푸는 DP 문제가 이전에 있었던 것 같았는데,, 순간이동 문제였나? 아무튼 이 방식에서 어디가 잘못되었길래 문제를 풀 수 없는 것일까?? 내가 생각한 방식은 1레벨(5)에 N을 사칙연산 해서 4종류의 2레벨 원소(1,0,10,25) 그리고 N을..
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr # 핵심 DP 삼각형 밑바닥에서부터 올라가기! # 통과 코드 class Solution { public int solution(int[][] triangle) { int len = triangle.length; int[][] dp = new int[len][len]; // dp 배열 초기화 for(int i = 0; i < len; i++) { for(int j = 0; j < triangle[i].length; j++) { dp[i][j] = triangle[i][j]; } } // 삼각형 밑바닥부터 꼭대기..
https://www.acmicpc.net/problem/11053 11053번: 가장 긴 증가하는 부분 수열 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이 www.acmicpc.net import java.util.Scanner; public class Main { static int N; static int[] nums; static int[] dp; public static void func() { for(int i = 0; i < N; i++) { dp[i] = 1; for(int j = 0; ..
https://www.acmicpc.net/problem/2156 2156번: 포도주 시식 효주는 포도주 시식회에 갔다. 그 곳에 갔더니, 테이블 위에 다양한 포도주가 들어있는 포도주 잔이 일렬로 놓여 있었다. 효주는 포도주 시식을 하려고 하는데, 여기에는 다음과 같은 두 가지 규 www.acmicpc.net import java.util.Arrays; import java.util.Scanner; public class Main { static int N; static int[][] dp; // 0: 안마심 / 1: 1연속 마심 / 2: 2연속 마심 static int[] wine; public static void print() { for(int i = 0; i < N; i++) { System.ou..
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { static int N; static int[][] board; static int[][] dp; public static int func() { dp[1][0] = board[1][0]; dp[2][0] = board[2][0]; for(int i = 1; i < N; i++) { dp[0][i] = Math.max(dp[1][i - 1], dp[2][i - 1]); // 현재 라인에서 스티커를 안떼는 경우 dp[1][i] = Math.max(..
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; import java.util.StringTokenizer; public class Main { static int N; static int[][] board; static long[][] visited; public static void print() { System.out.println("------"); for(int j = 0; j < N; j++) { System.out.println(Arrays.toString(visited[j])); } } public static void func(..