Lv 3. 가장 먼 노드
·
Algorithm/Programers
https://school.programmers.co.kr/learn/courses/30/lessons/49189 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr   이번 문제는 Dijkstra 기법을 활용하여 최단거리를 ans[] 배열에 저장하고최단 거리중 가장 큰값의 갯수를 세어반환하는 형식으로 풀이하였다. 이차원 배열을 통해 node간의 간선 연결정보를저장하였더니 메모리 초과가 나타나 ArrayList를 활용하여 간선 연결된 것만 data 저장을하는 방식으로 풀어내었다.   // 다익스트라 dijkstra algorithm 최단경로 algorithm// ..
Lv 2. 행렬의 곱셈
·
Algorithm/Programers
https://school.programmers.co.kr/learn/courses/30/lessons/12949 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr   arr1 의 크기가 answer 배열의 행갯수, arr2의 크기가 answer 배열의 열갯수가 된다.  i 로 answer의 열, j로 행을 돌아다니며 그 행의 값을k로 arr1의 행 * arr2의 열 을 돌면서 더해준다.  class Solution { public int[][] solution(int[][] arr1, int[][] arr2) { int[][] answer =..
Lv 3. 방금 그 곡
·
Algorithm/Programers
https://school.programmers.co.kr/learn/courses/30/lessons/17683 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr// 시간계산 // musicinfo 를 돌아가면서 끝시간 - 시작시간으로 문자열길이 확정// 배열길이만큼 musicinfo 의 악보를 차례대로 집어넣음 끊기면 어쩔수없// 거기서 m이라는 기억한 멜로디가 존재하는지 확인하되 끝부분이 #이면 안된다. ㅇㅋ? // String.contains로 만들면되겠네그리고 만약 Contains 가 같으면 X// 배열말고 문자열로 해도되겠다.// Map에 저장하자 S..
Lv 3. 보석 쇼핑
·
Algorithm/Programers
https://school.programmers.co.kr/learn/courses/30/lessons/67258?language=java 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr   투포인터와 슬라이딩 윈도우 알고리즘을 활용하여풀이하였다.맨처음 생각한 것은 시작과 끝 두개의 지점을 정하고끝지점에서 하나씩 줄여나가고 보석의 갯수가 떨어지면 시작점을 늘리는 방식으로고민하였으나 그 마저도 예외가 존재할 수 있어 시작과 끝점을 1부터시작해 끝점이 올라가다가 보석 갯수가 보석종류와 일치할때시작점을 올려보면서 보석종류와 보석갯수가 달라질때를 찾고 최저점 갱신을 ..
Lv 3. 스티커 모으기
·
Algorithm/Programers
https://school.programmers.co.kr/learn/courses/30/lessons/12971 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr// DP // 1번째 스티커를 선택할때 끝 스티커를 선택하지 못하게// 마지막 스티커를 선택할때 끝 스티커를 선택할 수 있게import java.util.*;class Solution { public int solution(int sticker[]) { int n = sticker.length; // 스티커가 1개인 경우 바로 리턴 if (n == 1) re..
Lv 3. 베스트 앨범
·
Algorithm/Programers
https://school.programmers.co.kr/learn/courses/30/lessons/42579?language=java 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr  HashMap을 활용하여 Genre가 이미 존재하는지 확인하고Music은 새로 받을때마다 하나의 객체를 만들어주고Genre에 존재하는 pq에 집어넣어주면서 자동정렬해주었다.관건은 HashMap을 정렬하는데서 오류가 발생하였고Collections.sort로 정렬하려 하였으나 Map과 Set같은 경우List 형태가 아니어서 정렬이 불가능하다는것을 알았다.HashMap에 존재하는..
Lv 2. 다리를 지나는 트럭
·
Algorithm/Programers
https://school.programmers.co.kr/learn/courses/30/lessons/42583 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr  과거풀려고 시도했었으나문제의 bridge_length가 시간마다 1씩 줄어든다는조건을 문제를 읽고 제대로 파악하지 못해풀지못했던 기억이 난다.문제를 꼼꼼히 읽어보면 다리길이가 2라면 건너는데 2초가걸린다는것을 이해할 수 있다.그이외에는 어려운 부분이 없다.Queue와 Node라는 클래스를 사용하여객체지향적으로 풀어보도록 노력했다. //Queue 사용해서 하면될듯// Node 사용import java..
Lv 3. 기지국 설치
·
Algorithm/Programers
https://school.programmers.co.kr/learn/courses/30/lessons/12979?language=java 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr// 단위가 ㅈㄴ큼 아파트가 2억채 일수 있다.// 그래서 최적화가 중요한데 // 일단 범위가 얼마나 커버할 수 있나.가 중요할듯// 나누기와 퍼센트 활용// 이미 설치된 station 기준으로 넘어가자. // class Solution { public int solution(int n, int[] st, int w) { int ans = 0; i..
Lv 3. 단속카메라
·
Algorithm/Programers
https://school.programmers.co.kr/learn/courses/30/lessons/42884?language=java 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr이 문제를 푸는데에 있어 진출지점 즉 끝나는지점을 기준으로 오름차순 정렬하고 끝나는지점이 다음지점을 커버하는지 안커버하는지만 안다면 보다 쉽고 최적화된 코드를 짤 수 있음을 알게 되었다.나는 시작지점과 끝지점을 모두 고려하여 코드를 작성했기 때문에 쓸데없는 메모리소모가 많았지만.GPT 는 끝지점 즉 진출지점을 기준으로 다음 루트가 커버되는지 확인하여 보다 최적화된 코드를 짤 수..
Lv 3. 최고의 집합
·
Algorithm/Programers
https://school.programmers.co.kr/learn/courses/30/lessons/12938 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr// 일단 s 를 n 으로 나눈다.// 그럼 하나의 숫자가 나오게 되어있다. class Solution { public int[] solution(int n, int s) { int[] answer = new int[n]; int num = s / n; if (num