Algorithm 17

프로그래머스 압축 Java - 최적화하기

https://school.programmers.co.kr/learn/courses/30/lessons/17684 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2018 KAKAO BLIND RECRUITMENT 코딩테스트 연습 | 프로그래머스 스쿨 개발자 취업의 필수 관문 코딩테스트를 철저하게 연습하고 대비할 수 있는 문제를 총망라! 프로그래머스에서 선발한 문제로 유형을 파악하고 실력을 업그레이드해 보세요! school.programmers.co.kr 위의 문제를 이전에 풀어봤을 땐 5일씩 붙잡고 풀었던 기억이 난다. 여러 가지 노하우가 쌓인 지금 Ha..

Algorithm 2024.01.25

[Programmers] 등굣길 Java

동적 계획법(Dynamic Programming) > 등굣길 https://school.programmers.co.kr/learn/courses/30/lessons/42898?language=java 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 처음 코드(효율성 0점) class Solution { public int solution(int m, int n, int[][] puddles) { int answer = 0; int[][] route = new int[m + 1][n + 1]; for(int i = 0; i < puddles.length; i..

Algorithm 2023.11.28

[Programmers] 가장 먼 노드 Java

문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/49189 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 가장 먼 노드 문제 설명 n개의 노드가 있는 그래프가 있습니다. 각 노드는 1부터 n까지 번호가 적혀있습니다. 1번 노드에서 가장 멀리 떨어진 노드의 갯수를 구하려고 합니다. 가장 멀리 떨어진 노드란 최단경로로 이동했을 때 간선의 개수가 가장 많은 노드들을 의미합니다. 노드의 개수 n, 간선에 대한 정보가 담긴 2차원 배열 vertex가 매개변수로 주어질 때, 1번 노드로부터 가장 멀리..

Algorithm 2023.11.22

[Programmers] 단속 카메라 Java

문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/42884 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 단속카메라 문제 설명 고속도로를 이동하는 모든 차량이 고속도로를 이용하면서 단속용 카메라를 한 번은 만나도록 카메라를 설치하려고 합니다. 고속도로를 이동하는 차량의 경로 routes가 매개변수로 주어질 때, 모든 차량이 한 번은 단속용 카메라를 만나도록 하려면 최소 몇 대의 카메라를 설치해야 하는지를 return 하도록 solution 함수를 완성하세요. 제한사항 차량의 대수는 1대 이..

Algorithm 2023.11.22

[SWEA] 1859. 백만 장자 프로젝트 D2 Java

문제https://swexpertacademy.com/main/code/problem/problemDetail.do?problemLevel=2&contestProbId=AV5LrsUaDxcDFAXc&categoryId=AV5LrsUaDxcDFAXc&categoryType=CODE&problemTitle=&orderBy=RECOMMEND_COUNT&selectCodeLang=JAVA&select-1=2&pageSize=10&pageIndex=1 SW Expert AcademySW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!swexpertacademy.com 문제 이해하기예시를 보면서 문제를 이해해보자. 세 번째 테스트 케이스를 보면 1 1 3 1 2 (buy buy sell) (b..

Algorithm 2023.10.27

[Programmers] 동적 계획법 > 정수 삼각형 (Java)

문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/43105 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 요약 삼각형의 위에서 밑으로 한 칸씩 내려가면서 숫자를 더한다. triangle의 길이만큼 반복한다. 합한 값이 가장 큰 걸 구한다. 구현 착안 한 칸씩 내려가면서 숫자를 더하므로 내려갈 때 선택에 따라 값이 변경된다. 이 말은 즉, 이전까지의 값이 모두 같기 때문에 중복 연산을 피하려면 동적 계획법으로 풀 수 있다. 구현 방식 밑으로 내려가는 방법에는 세 가지가 있다. 내려가면서..

Algorithm 2023.10.13

동적 계획법(dynamic programming)

동적 계획법 복잡한 문제를 여러 개의 간단한 문제로 분리하여 부분의 문제들을 해결함으로써 최종적으로 복잡한 문제의 답을 구하는 방법 원리 1. 큰 문제를 작은 문제로 나눌 수 있어야 한다. 2. 작은 문제들이 반복돼 나타나고 사용되며 이 작은 문제들의 결괏값은 항상 같아야 한다. 3. 모든 작은 문제들은 한 번만 계산해 DP 테이블에 저장하며 추후 재사용할 때는 이 DP 테이블을 이용한다. 이를 memoization 기법이라고 한다. 4. 동적 계획법은 top-down 방식과 bottom-up 방식으로 구현할 수 있다. 피보나치 수열 공식 D[N] = D[N-1] + D[N-2] // N번째 수열 = N-1번째 수열 + N-2번째 수열 구현 방식 1. 동적 계획법으로 풀 수 있는지 확인하기 2. 점화식 ..

Algorithm 2023.10.13

[Programmers] Hash > 폰켓몬 (Java)

https://school.programmers.co.kr/learn/courses/30/lessons/1845 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 요약 총 N 마리 포켓몬 중 N/2마리를 가져갈 수 있다. 폰켓몬 종류의 수가 최대한 다양하게 가질 수 있도록 선택한다. 구현 착안 가장 많은 종류의 폰켓몬을 선택하는 방법을 찾아야하므로, 중복을 허용하지 않는 hashset을 사용하여 구현한다. 구현 순서 다음과 같은 순서로 생각해볼 수 있다. 1. int[]의 nums를 hashset으로 담아주어 중복을 제거한다. 2. answer는 has..

Algorithm 2023.10.12

[Programmers] 게임 맵 최단거리 Java

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

Algorithm 2023.10.10

[Programmers] 타겟 넘버 Java

https://school.programmers.co.kr/learn/courses/30/lessons/43165?language=java 문제 설명 그래프의 모든 정점을 순회하면서 target에 해당하는 계산식을 찾는다. 백트래킹이므로 dfs로 구현한다. class Solution { int count = 0; public int solution(int[] numbers, int target) { int answer = 0; dfs(numbers, target, 0, 0); // depth, result answer = this.count; return answer; } public void dfs(int[] numbers, int target, int depth, int result) { if(dep..

Algorithm 2023.10.09