Algorithm/Programmers 72

조이스틱 : Java

프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr A가 아닌 경우 > 조이스틱 위, 아래 이동도 해야함+커서 좌우로 움직이기>커서 오른쪽으로만 쭉 가는 경우 vs 오른쪽 갔다가 왼쪽으로 가는 경우 vs 왼쪽으로 갔다가 오른쪽으로 가는 경우 Math.min으로 최솟값 구하기 import java.util.*;class Solution { public int solution(String name) { int answer = 0; int n = name.length(); int move = n-1; // 커서 오른쪽으로만 쭉 가는 경우 ..

같은 숫자는 싫어 : Java

코딩테스트 연습 - 같은 숫자는 싫어알고리즘 문제 연습 카카오톡 친구해요! 프로그래머스 교육 카카오 채널을 만들었어요. 여기를 눌러, 친구 추가를 해주세요. 신규 교육 과정 소식은 물론 다양한 이벤트 소식을 가장 먼저 알려school.programmers.co.kr 이전 값의 결과가 현재 값으로 결정되는거라 '주식가격' 문제처럼 스택 이용 문제인 줄 알았는데>'주식 가격' 문제는 이전 여러 값의 결과 현재 값으로 확정되는거라 스택, 지금 문제는 연속=>단 하나의 이전 값만 비교하면되니까 스택은 과하고 그냥 ArrayList 사용하면 됨 import java.util.*;public class Solution { public int[] solution(int[] arr) { ArrayLi..

[Lv.2] 주식 가격 : Java, Stack

프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 가격이 떨어지지 않은 기간 몇 초인지 return전 가격 #(배열 크기-1)만큼 반복0 : 1번째 원소부터 비교 => 떨어지면 카운트X#마지막 원소는 0 리턴 #통과는 했지만 시간복잡도 O(n^2) 인 코드import java.util.*;class Solution { public int[] solution(int[] prices) { int[] answer = new int[prices.length]; for(int i=0; i prices[j]) break; ..

[Lv.2] 더 맵게 : Java, PriorityQueue

프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr #반복모든 음식의 스코빌 지수 >= 원하는 스코빌 지수 이면 종료 => 우선순위 큐의 가장 첫번째 원소가 원하는 스코빌 지수 이상일 섞은 음식의 스코빌 지수 추가하기가장 맵지 않은거, 두번째 맵지 않은거 제거섞은 횟수++=>PriorityQueue 사용하기 #일부 테스트에서 런타임 에러 발생한 코드원인 : pq.poll()을 one, two로 2번 하는데 원소가 1개 남은 경우에는 two에 null이 들어가는데 int로 언박싱하려고 하기 때문에 NullPointerException이 발생import java.util.*;class Solution { publi..

[Lv.2] 롤케이크 자르기 : Java

프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 처음에는 모든 토핑을 왼쪽에 Map에 넣기, 오른쪽 Map은 비워두기왼쪽 Map에 있는 토핑을 1개씩 오른쪽 Map에 옮기면서 개수 비교하기개수 size() 같으면 answer++ import java.util.*;class Solution { public int solution(int[] topping) { int answer = 0; HashMap left = new HashMap(); HashMap right = new HashMap(); // 처음엔 왼쪽에 토핑 다 담아두기 ..

[Lv.3] 순위 : Java / 플로이드 워셜

프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr #알고리즘 아이디어1.방향 그래프 만들기 a->b : a가 b를 이김2.BFS 탐색 : 자신이 이길 수 있는 노드수, 자신에게 도달 가능한 노드 수 계산=> 자신이 이길 수 있는 노드수 + 자신에게 도달 가능한 노드 수(지는 경우) = n-1 인 경우에 정확한 순위 알 수 있음 => BFS/DFS 탐색 또는 플로이드워셜로 탐색 가능로그래머스>플로이드워셜 : 모든 지점에서 모든 지점까지의 최단 거리 구하기 가능 -BFS 풀이 코드양방향 그래프 만들기각 노드에서 2번 탐색이기는 수 + 지는 수 == n-1 인지 확ㅇ니import java.util.*;class Solu..

[Lv.2] 방문 길이 : Java / 간선 방문 확인

프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 좌표가 아니라 "길(간선)"을 HashSet으로 관리>양방향 간선으로 넣어줘야 함 => 길 개수 구할 때 size()/2 해줘야 함*HashSet 사용하는 이유 : 중복 카운트하지 않으려고*마지막에 HashSet크기/2하는 이유 (5,5) → (5,6)랑 (5,6) → (5,5) 둘이 같은 길이니 #알고리즘 순서1 시작 좌표 (0,0) 2 명령 하나씩 처리 → 다음 좌표(nx, ny) 계산 3 범위 체크 (-5 ~ 5) → 범위 밖이면 무시 4 길 저장 (x,y,nx,ny) (nx,ny,x,y) 5 현재 좌표 이동 x = nx y ..

[Lv.1] 문자열 내 마음대로 정렬하기 / 사전 순 정렬

프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr import java.util.*;class Solution { public String[] solution(String[] strings, int n) { // 오름차순 정렬 // 인덱스의 문자 같은 경우 > 사전순 Arrays.sort(strings, (a,b)->{ if(a.charAt(n)== b.charAt(n)){ // 사전순 return a.compareTo(b); } ..

728x90