[Algorithm] 프로그래머스_모의고사(JAVA)
·
Algorithm
https://school.programmers.co.kr/learn/courses/30/lessons/42840?language=java 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr수포자 1,2,3의 고정값을 배열에 저장하고int[] student1 = {1, 2, 3, 4, 5}; int[] student2 = {2, 1, 2, 3, 2, 4, 2, 5}; int[] student3 = {3, 3, 1, 1, 2, 2, 4, 4, 5, 5}; 맞힌 개수를 각각 answer[0], answer[1], answer[2]에 저장해 주고가장 정답을 많이 맞힌 max값을 구해다시 그 max값과 일치하는 값..
[Algorithm] 프로그래머스_게임 맵 최단거리(JAVA)
·
Algorithm
https://school.programmers.co.kr/learn/courses/30/lessons/1844?language=java 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr이 문제는 전형적인 bfs 문제가 아닐까 싶다.방문할때마다 이전 방문지 값에 +1을 해주고 최하단에 도착했을 때 값을 반환해준다.최하단에 이르지 못하는 경우에는 -1을 반환해준다. 대충 이러한 그림을 상상할 수 있다.이 경우 최하단에 도착했을 때 11이므로 11을 그대로 반환해주면 된다. 이를 구현한 코드는 아래와 같다.import java.util.*;class Solution { public int solution..
[Algorithm] 프로그래머스_체육복(JAVA)
·
Algorithm
https://school.programmers.co.kr/learn/courses/30/lessons/42862 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.krreverse와 lost를 정렬한다. answer의 초기값을 n-lost.length로 설정한다. 이중 포문을 사용하여 reverse와 lost가 겹치는 학생 번호가 있다면 해당 배열에 -1을 대입한다. 이후 reverse+1 또는 reverse-1이 lost에 존재한다면 answer++를 해주고 lost와 reserve에 -1을 대입한다. import java.util.*;class Solution { public int solution(..
[Algorithm] 프로그래머스_완주하지 못한 선수(JAVA)
·
Algorithm
https://school.programmers.co.kr/learn/courses/30/lessons/42576 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.krhashMap을 사용하여 participant 배열의 선수들을 key값으로 넣고 value에 해당 선수가 몇명인지 넣는다. 그 후 completion배열의 선수들에 대해 value값을 -1 해준다. 결과적으로 value값이 0이 아닌 선수를 return해준다. hashMap의 getOrDefault메서드를 사용하여 코드의 가독성을 높일 수 있다. getOrDefault(key, defaultValue) => key가 존재하면 기존 value값을,..
[Algorithm] 프로그래머스_네트워크(JAVA)
·
Algorithm
https://school.programmers.co.kr/learn/courses/30/lessons/43162 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr문제 이해 잘못해서 시간을 꽤 쓴 문제다. 처음엔 2차원 방문 배열이 필요하다고 생각했는데,각 컴퓨터의 방문 여부만 체크하면 되므로 1차원 배열으로도 충분함을 깨달았다. 0~n번까지의 컴퓨터가 있다면0번 컴퓨터부터 큐에 넣고 0번과 연결되어 있는 컴퓨터를 찾는다.그 컴퓨터를 큐에 넣는다.위 과정을 반복하는 로직을 구현하면 된다~ 이때, 0-1, 0-3, 3-2 가 연결되어 있다면 하나의 네트워크이다.computers : [[1, 1, 0, 1],..
[Algorithm] 프로그래머스_K번째수(JAVA)
·
Algorithm
https://school.programmers.co.kr/learn/courses/30/lessons/42748 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr문제를 따라가며 구현하면 어렵지않은 문제!배열을 자르고 정렬하고 뽑아내면 됐다.. import java.util.*;class Solution { public int[] solution(int[] array, int[][] commands) { int[] answer = new int[commands.length]; for(int i = 0; i  여기서 더 최적화하려면 Arrays.copyOfRange() 메서드를..
[Algorithm] 프로그래머스_올바른 괄호(JAVA)
·
Algorithm
https://school.programmers.co.kr/learn/courses/30/lessons/12909 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr이 문제는 스택을 사용하여")" 문자가 나오면 "(" 문자를 스택에서 꺼내는 방식으로 접근한다. 그림을 그려보면 이해가 쉽다.문자를 다 꺼낸 후에도 스택에 남아있다면 짝이 맞지 않는 문자열만 남았으므로 false가 된다. 추가로 아래 두 가지 경우도 false가 된다.1.")"를 꺼냈는데 스택이 비어 있는 경우2. ")"를 꺼낸 후 다음 문자열이 "("이 아닌 경우 위 내용을 토대로 구현한 코드는 아래와 같다.import java.util.*;c..
[Algorithm] 프로그래머스_타겟넘버(JAVA)
·
Algorithm
https://school.programmers.co.kr/learn/courses/30/lessons/43165 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 이 문제는 모든 경우의 수를 생각해야 하므로 dfs 알고리즘을 사용한다. 이런 그림을 그려가며 접근을 했고 sum = 0 + numbers[0] + numbers[1] ...numbers[idx]sum = 0 - numbers[0] + numbers[1] ...numbers[idx]...idx값이 주어지는 배열 길이가 되었을때 재귀문을 빠져나온다. 이때 sum이 target값과 같다면 answer 값을 +1 해준다. 위 내용을 토대로 구현한 코..
[Algorithm] 프로그래머스_특이한 정렬(JAVA), 우선순위 큐, Comparator
·
Algorithm
https://school.programmers.co.kr/learn/courses/30/lessons/120880 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr이 문제의 접근은 n과 배열의 차이값을 구하자는 아이디어로부터 시작됐다.[-3, -2, -1, 0, 1, 2] 이런 식으로 차이값이 들어있는 배열을 생성할 수 있을 것이다.이후 우선순위 큐가 생각났고, 절대값으로 우선순위를 매기되 같은 값이면 양수가 우선순위가 되도록 설정하였다. 여기서 Comparator 반환값에 대해 맨날 헷갈려서 정리하려고 한다.PriorityQueue는 내부적으로 Comparator 인터페이스를 사용하고Comparator..
[Algorithm] 프로그래머스_겹치는 선분의 길이(Java)
·
Algorithm
https://school.programmers.co.kr/learn/courses/30/lessons/120876 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr처음 이 문제를 보고 케이스를 나눠서 풀어야 되나.. 생각이 많았던 문제다.일정한 규칙이 보이는 문제도 아니고! ㅠ 결국 구글링 해서 알아낸 힌트는 선분의 길이가 아닌 점이 지나는 곳에 집중한다는 것이다.-100 ~ 100까지의 범위니까 200개의 숫자를 담을 수 있는 배열을 만들고, 지나는 점을 모두 카운트하는 것이다.그리고 점이 두 번이상 겹치는 것의 개수를 구하면 답이 나온다! class Solution { public int sol..