목록알고리즘 (31)
개발의변화
https://school.programmers.co.kr/learn/courses/30/lessons/132266 다익스트라 알고리즘을 활용해야 했다. 다 까먹은 다익스트라 알고리즘을 하나하나 다시 만드는데 있어서 시간이 오래 걸리진 않았다. 블로그 포스팅한 이유는 Comparable, Comparator를 활용한 우선순위큐 만드는 것을 잊지않을려고 올린다. import java.util.*; class Solution { public int[] solution(int n, int[][] roads, int[] sources, int destination) { int[] answer = new int [sources.length]; ArrayList [] arr = new ArrayList[n+1]; ..
https://school.programmers.co.kr/learn/courses/30/lessons/136797 문제 방향을 3번이나 꺾어서 풀었다. 첫 번째 방향은 완전탐색이었으나 2의 100000승 연산으로 결국 밑에 5개 케이스가 시간초과가 터졌고 두 번째 방향은 그리디였다. 왼손 오른손에서 가장 가까운 곳을 선택하고 같을 때는 왼손 클릭, 오른손 클릭 두 번의 케이스를 다 해결하는 방식이었다. -> 하지만 이 또한 완벽한 그리디가 아니었고 5개의 시간초과와 2개의 케이스에서 오류가 발생했다. 결국 마지막으로 DP를 활용해야 했고 숫자의 개수 10 왼손 오른손 실행 하므로 10 * 10 그리고 numbers의 길이가 100000이었으므로 10 * 10 * 100000번의 실행을 한다. O(1억)..
Arrays.sort(arr, new Comparator() { @Override public int compare(int[] o1, int[] o2) { int answer = o2[1] - o1[1]; if (answer == 0) { answer = o1[0] - o2[0]; } return answer; } }); https://school.programmers.co.kr/learn/courses/30/lessons/138475?language=java [프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr](https://school.programmer..
https://school.programmers.co.kr/learn/courses/30/lessons/150366 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 구현을 하는데 있어서 어떠한 저장방식을 사용하느냐에 대한 깊은 고민이 필요한 문제였고 또한 구현이기에 디테일한 방식을 활용해야 했던 문제였던 것 같았다. UPDATE에 대한 문자열을 저장하는 이차원 배열과 유니온파인드 형식을 활용하여 병합데이터를 획득한 방식으로 활용했다. import java.util.*; public class Solution { static int N = 51; static..
https://school.programmers.co.kr/learn/courses/30/lessons/150367 트리만 보면 겁을 먹는 자기 자신을 반성하며 2시간 동안 고민하여 풀었다. 결국 완전한 이진트리이기 때문에 받아오는 숫자의 노드 개수를 1,3,7,15 이렇게 맞춰줘야했다. public static long findDepth(long num) { long depth = 0; long plus = 1; long count = 0; while (num > depth) { depth = depth + plus; plus*=2; count++; } depth = 0; plus = 1; while (count > depth) { depth = depth + plus; plus *= 2; } retu..
https://school.programmers.co.kr/learn/courses/30/lessons/161988?language=java 완전탐색으로 풀기엔 Sequence의 길이가 50000이었고 결국 12번부터 시간초과 또는 런타임 에러가 발생했다. 펄스 부분의 수열 합이 절대 0보다 작아질 수 없다는 것이 키포인트였고 펄스 부분의 수열 합이 0보다 작아질 때 0으로 처리하고 나아가는 방식을 취했다. import java.util.*; class Solution { public long solution(int[] sequence) { long answer = 0; long s1 = 0; long s2 = 0; int pivot = 1; for (int num : sequence) { s1 += p..
https://school.programmers.co.kr/learn/courses/30/lessons/214289 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr DP를 활용해야 하는 문제였다. 시간,온도 꼴의 이차원 배열을 생성하여 시간 안에서 최소의 전력소비값을 구하는 상향식 접근이 필요했다. 또한 에어컨의 온도를 높이거나 낮출때의 방향설정이 중요한 포인트였다. def solution(temperature, t1, t2, a, b, onboard): k = 1000 * 100 t1 += 10 t2 += 10 temperature += 10 # DP[i..
1. 요격 시스템 https://school.programmers.co.kr/learn/courses/30/lessons/181188 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr function solution(targets) { targets.sort((a,b)=>a[1]-b[1]) //오름차순 let prev = -1 let answer = 0; for (target of targets) { const [start,end] = target if (prev { return parseInt(str.split(":").join("")) } plans=pl..