코테 8

[프로그래머스] K번째수 for JAVA

https://programmers.co.kr/learn/courses/30/lessons/42748 코딩테스트 연습 - K번째수 [1, 5, 2, 6, 3, 7, 4] [[2, 5, 3], [4, 4, 1], [1, 7, 3]] [5, 6, 3] programmers.co.kr 내가 푼 방법 그냥 문제를 정리하고 풀라는대로 풀었다. for문으로 2차원 배열인 commands의 0~n번째 행을 읽고...했다. 코드 import java.util.ArrayList; import java.util.Collections; class Solution { public int[] solution(int[] array, int[][] commands) { int[] answer = new int[commands.le..

[프로그래머스] 소수 만들기 for JAVA

https://programmers.co.kr/learn/courses/30/lessons/12977 코딩테스트 연습 - 소수 만들기 주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하려고 합니다. 숫자들이 들어있는 배열 nums가 매개변수로 주어질 때, nums에 있는 숫자들 중 서로 다른 3개를 골라 더했을 때 programmers.co.kr 내가 푼 방법 내가 풀려고 시도한 방법은 우선 배열에서 3개의 수를 3중 for문으로 더하고 그 수가 2부터 자기 자신 전까지의 수 중에서 나누어지는게 있는지 찾는다. 3중 for문을 사용해서 시간 복잡도가 엉망인 코드이다. 코드 class Solution { public int solution(int[] nums) { int answer =..

[프로그래머스] 내적 for JAVA

https://programmers.co.kr/learn/courses/30/lessons/70128 코딩테스트 연습 - 내적 길이가 같은 두 1차원 정수 배열 a, b가 매개변수로 주어집니다. a와 b의 내적을 return 하도록 solution 함수를 완성해주세요. 이때, a와 b의 내적은 a[0]*b[0] + a[1]*b[1] + ... + a[n-1]*b[n-1] 입니다. (n은 a, b의 programmers.co.kr 내가 푼 방법 문제 그대로 풀었다. 코드 class Solution { public int solution(int[] a, int[] b) { int answer = 0; for(int i = 0; i < a.length; i++) answer += (a[i] * b[i]); r..

[프로그래머스] 음양 더하기 for JAVA

https://programmers.co.kr/learn/courses/30/lessons/76501 코딩테스트 연습 - 음양 더하기 어떤 정수들이 있습니다. 이 정수들의 절댓값을 차례대로 담은 정수 배열 absolutes와 이 정수들의 부호를 차례대로 담은 불리언 배열 signs가 매개변수로 주어집니다. 실제 정수들의 합을 구하여 re programmers.co.kr 내가 푼 방법 그냥.... i = 0 ~ 배열의 길이 로 for문 돌리고 signs[i] = true면 +absolutes[i], 아니면 -absolutes[i] 코드 class Solution { public int solution(int[] absolutes, boolean[] signs) { int answer = 0; for(int..

[프로그래머스] 없는 숫자 더하기 for JAVA

https://programmers.co.kr/learn/courses/30/lessons/86051?language=java 코딩테스트 연습 - 없는 숫자 더하기 0부터 9까지의 숫자 중 일부가 들어있는 배열 numbers가 매개변수로 주어집니다. numbers에서 찾을 수 없는 0부터 9까지의 숫자를 모두 찾아 더한 수를 return 하도록 solution 함수를 완성해주세요. 제한 programmers.co.kr 내가 푼 방법 구하는게 없는 숫자의 합이므로 1~9까지 더한 45에서 numbers를 모두 더한 값을 뺐다. class Solution { public int solution(int[] numbers) { int answer = 0; for(int i : numbers) answer += ..

[프로그래머스] 크레인 인형뽑기 게임 for JAVA

https://programmers.co.kr/learn/courses/30/lessons/64061 코딩테스트 연습 - 크레인 인형뽑기 게임 [[0,0,0,0,0],[0,0,1,0,3],[0,2,5,0,1],[4,2,4,4,2],[3,5,1,3,1]] [1,5,3,5,1,2,1,4] 4 programmers.co.kr 내가 푼 코드 결론부터 말하자면 테스트케이스 1,2에서 실패했다. 참내..... 질문하기 들어가서 사람들이 말해준 테스트케이스를 다 해봤는데도 왜 안되는지 모르겠음ㅋ 틀린 코드 import java.util.ArrayList; class Solution { public int solution(int[][] board, int[] moves) { int answer = 0; ArrayLis..

[프로그래머스] 키패드 누르기 for JAVA

https://programmers.co.kr/learn/courses/30/lessons/67256 코딩테스트 연습 - 키패드 누르기 [1, 3, 4, 5, 8, 2, 1, 4, 5, 9, 5] "right" "LRLLLRLLRRL" [7, 0, 8, 2, 8, 3, 1, 5, 7, 6, 2] "left" "LRLLRRLLLRR" [1, 2, 3, 4, 5, 6, 7, 8, 9, 0] "right" "LLRLLRLLRL" programmers.co.kr 내가 푼 방법 우선 1 4 7 나오면 무조건 L, 3 6 9 나오면 무조건 R인건 자명하다. 그리고 2 5 8 0 에서 가까운걸 찾아야하니까 마지막에 누른 L과 R을 따로 저장해놓는다. 2 5 8 0 얘네가 것참 어려웠는데.. 2차원 배열을 써야하나 싶..

[Algorithm] 탐욕(그리디) 알고리즘 (greedy algorithm)

그리디 알고리즘은 문제를 해결하는 과정에서 가장 좋다고 생각하는 방법을 선택하는 알고리즘이다. 예를 들어 노드 값의 최대 합은 5 -> 7 -> 9를 거쳐 21임을 알 수 있다. 그러나 그리디 알고리즘을 사용하면 그때그때 최대값이 될 것이라고 추측되는 값을 사용하게 된다. 따라서 5 다음에 7, 10, 8 중 가장 큰 값인 10을 사용하고 4, 3 중 큰 값인 4를 사용하게 된다. 이처럼 그리디 알고리즘이 문제의 해결에 있어서 최적의 해를 매번 보장하지는 않는다. 그러나 그리디 알고리즘은 계산 속도가 빠르다. 그리디 알고리즘이 적절하다고 판단되는 문제에서는 최적의 해를 빠르게 산출할 수 있다. 예시 출처 : 이것이 취업을 위한 코딩 테스트다 예를 들어 N = 5이고 각 모험가의 공포도가 2 3 1 2 2..