programmers 14

[프로그래머스] 구명보트 for JAVA _ 그리디 알고리즘

https://programmers.co.kr/learn/courses/30/lessons/42885 코딩테스트 연습 - 구명보트 무인도에 갇힌 사람들을 구명보트를 이용하여 구출하려고 합니다. 구명보트는 작아서 한 번에 최대 2명씩 밖에 탈 수 없고, 무게 제한도 있습니다. 예를 들어, 사람들의 몸무게가 [70kg, 50kg, 80kg, 5 programmers.co.kr people[] 배열이 뒤죽박죽 되어있으므로 Arrays.sort()를 이용해 오름차순으로 정리한다. 그리고 여기서 가장 큰 수는 people.length() - 1 인덱스를 가진 수 이다. 맨 뒤에꺼! 얘랑 people[0] 인 가장 작은 수와 더했을 때 limit보다 작으면 둘이 태울 수 있고 limit보다 크다면 뚱뚱이 한명만 태..

[프로그래머스] 큰 수 만들기 for JAVA _ 그리디 알고리즘

https://programmers.co.kr/learn/courses/30/lessons/42883 코딩테스트 연습 - 큰 수 만들기 programmers.co.kr 안봐도 되는 실패기 위의 문제 알고리즘은 왼쪽 숫자부터 그 옆 숫자와 비교하여 오른쪽 숫자가 더 크면 왼쪽 숫자를 지우는 방식을 사용하였다. 그러니까 4177252841 에서 4, 1을 비교하면 4 < 1 이므로 넘어가고 1 < 7 이므로 1을 삭제한다. 그러면 477252841이 되고 4 < 7 이므로 4를 삭제하여 77252841이 되고 2 < 5 이므로 2를 삭제하여 7752841, 2 < 8 이므로 775841 이 return 되는 것이다. 그래..알고리즘은 이렇게 짰고 구현을 할 때 2중 for문으로 k번 만큼 돌게, 왼쪽부터 훑..

[프로그래머스] 조이스틱 for JAVA _ 그리디 알고리즘

https://programmers.co.kr/learn/courses/30/lessons/42860 코딩테스트 연습 - 조이스틱 조이스틱으로 알파벳 이름을 완성하세요. 맨 처음엔 A로만 이루어져 있습니다. ex) 완성해야 하는 이름이 세 글자면 AAA, 네 글자면 AAAA 조이스틱을 각 방향으로 움직이면 아래와 같습니다. ▲ - 다 programmers.co.kr 약간 노가다로 풀었다. 우선 조이스틱 상하를 살펴보면 A~N까지 0~13이고 Z~O가 0~12이다. N이 딱 가운데임 그래서 arraylist에 A~N, Z~O 를 각각 넣어서 몇 번째에 있는지 확인해 answer에 더해주었다. 조이스틱 좌우가 어려운데.. 예를 들어 ABAAAAAAB 일 때 무작정 오른쪽으로 가면 효율이 떨어진다. > < <..

[프로그래머스] 약수의 개수와 덧셈 for JAVA

https://programmers.co.kr/learn/courses/30/lessons/77884 코딩테스트 연습 - 약수의 개수와 덧셈 두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주 programmers.co.kr 내가 푼 방법 그냥 문제 그대로 풀었다. 약수 개수 구하는 함수 따로 만듦. 코드 class Solution { public int solution(int left, int right) { int answer = 0; for(int i = left; i

[프로그래머스] 실패율 for JAVA

https://programmers.co.kr/learn/courses/30/lessons/42889 코딩테스트 연습 - 실패율 실패율 슈퍼 게임 개발자 오렐리는 큰 고민에 빠졌다. 그녀가 만든 프랜즈 오천성이 대성공을 거뒀지만, 요즘 신규 사용자의 수가 급감한 것이다. 원인은 신규 사용자와 기존 사용자 사이에 스 programmers.co.kr 내가 푼 방법 어떻게 풀었냐면...그냥 fail[] 배열을 만들어서 실패율을 넣고 배열의 뒤부터 큰걸 훑어서 제일 큰 수의 index를 answer[] 배열에 넣었다. 뒤부터 훑은 이유는 겹치는 수가 있으면 작은수부터 넣어야하니까..~~ 그리고 index 넣은 수는 -2로 바꿔줬다. 진짜 몇시간동안 봤다. 어찌저찌 해서 냈더니 정답률 70이라 어이없어서ㅜㅠ 포기..

[프로그래머스] 폰켓몬 for JAVA

https://programmers.co.kr/learn/courses/30/lessons/1845 코딩테스트 연습 - 폰켓몬 당신은 폰켓몬을 잡기 위한 오랜 여행 끝에, 홍 박사님의 연구실에 도착했습니다. 홍 박사님은 당신에게 자신의 연구실에 있는 총 N 마리의 폰켓몬 중에서 N/2마리를 가져가도 좋다고 했습니다. programmers.co.kr 내가 푼 방법 nums 배열 속 숫자의 중복을 제거하여 폰켓몬이 몇 종류가 있는지 파악한다. 가질 수 있는 폰켓몬 수 = nums.length / 2 폰켓몬 종류 > 가질 수 있는 수 -> return 가질 수 있는 폰켓몬 수 폰켓몬 종류 return 폰켓몬의 종류 코드 import java.util.ArrayList; class Solution { publi..

[프로그래머스] 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..