프로그래머스 45

[프로그래머스] 나누어 떨어지는 숫자 배열 for JAVA

https://programmers.co.kr/learn/courses/30/lessons/12910 코딩테스트 연습 - 나누어 떨어지는 숫자 배열 array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요. divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하 programmers.co.kr arrayList에 나누어 떨어지는 숫자만 넣고 배열에 다시 넣어주는 형태로 했다. 코드 import java.util.*; class Solution { public int[] solution(int[] arr, int divisor) { int[] answer; ArrayList arrayL..

[프로그래머스] 같은 숫자는 싫어 for JAVA

https://programmers.co.kr/learn/courses/30/lessons/12906 코딩테스트 연습 - 같은 숫자는 싫어 배열 arr가 주어집니다. 배열 arr의 각 원소는 숫자 0부터 9까지로 이루어져 있습니다. 이때, 배열 arr에서 연속적으로 나타나는 숫자는 하나만 남기고 전부 제거하려고 합니다. 단, 제거된 후 남은 programmers.co.kr 스택 사용함 HashSet 사용할까 했는데 hashset은 get()으로 가져올 수 없는걸 알게됐다.~ 스택 사용했는데 음~ for문으로 stack.pop() 해서 하나씩 배열에 저장할까 했는데 이렇게하면 stack은 Integer 형이고 answer[]는 int 형이라 저장이...안된다. 다 0으로 저장됨 그래서 for each문으로..

[프로그래머스] 가운데 글자 가져오기 for JAVA

https://programmers.co.kr/learn/courses/30/lessons/12903 코딩테스트 연습 - 가운데 글자 가져오기 단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요. 단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다. 재한사항 s는 길이가 1 이상, 100이하인 스트링입니다. 입출력 예 s ret programmers.co.kr 코드 class Solution { public String solution(String s) { String answer = ""; if(s.length() % 2 == 0) answer += s.substring(s.length() / 2 - 1, s.length() / 2 + 1); else answer += s.su..

[프로그래머스] 2016년 for JAVA

https://programmers.co.kr/learn/courses/30/lessons/12901 코딩테스트 연습 - 2016년 2016년 1월 1일은 금요일입니다. 2016년 a월 b일은 무슨 요일일까요? 두 수 a ,b를 입력받아 2016년 a월 b일이 무슨 요일인지 리턴하는 함수, solution을 완성하세요. 요일의 이름은 일요일부터 토요일까 programmers.co.kr 윤년이면 2월에 29일까지 있는 날이다. 그래서 1월 31일, 2월 29일, 3월 31일, 4월 30일, 5월 31일, 6월 30일, 7월 31일, 8월 31일, 9월 30일, 10월 31일, 11월 30일, 12월 31일 까지 있음. 그리고 1/1이 금요일이고 요일은 7개니까 찾는 월 전까지의 월수와 일수를 더해서 7로 ..

[프로그래머스] 카펫 for JAVA _ 완전 탐색 알고리즘

https://programmers.co.kr/learn/courses/30/lessons/42842 코딩테스트 연습 - 카펫 Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다. Leo는 집으로 돌아와서 아까 본 카펫의 노란색과 programmers.co.kr x = 가로, y = 세로 크기라고 하면 1. (x - 2) * (y - 2) = yellow 2. x * y = brown + yellow 가 된다. 코드 class Solution { public int[] solution(int brown, int yellow) { int[] answer = new int[2]; int area = brown + yel..

[프로그래머스] 소수 찾기 for JAVA _ 완전 탐색 알고리즘 + 순열, 소수찾기

https://programmers.co.kr/learn/courses/30/lessons/42839 코딩테스트 연습 - 소수 찾기 한자리 숫자가 적힌 종이 조각이 흩어져있습니다. 흩어진 종이 조각을 붙여 소수를 몇 개 만들 수 있는지 알아내려 합니다. 각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어졌을 때, 종이 programmers.co.kr 어려워 고려해야할점은 1. 숫자 조합하기 2. 소수인지 확인 소수인지 확인하는 방법은 에라토스테네스의 체를 사용함 숫자를 조합하는게 문제인데 누가봐도 순열임 순열이 뭐냐면 예를 들어 numbers = 0,1,2,3 이었다고 하면 나올 수 있는 수가 1자리수 : 0, 1, 2, 3 2자리수 : 01, 02, 03, 10, 12, 13, 20, 21,..

[프로그래머스] 모의고사 for JAVA _ 완전탐색 알고리즘

https://programmers.co.kr/learn/courses/30/lessons/42840 코딩테스트 연습 - 모의고사 수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는 programmers.co.kr 완전탐색 유형에 있는 level1짜리 문제이다. 학생 1,2,3의 문제 번호는 계속 반복되므로 이걸 answer의 길이만큼 반복해서 비교해야 한다. 코드 import java.util.ArrayList; class Solution { public int[] solution(int[] answers) { int[] answer = {}; int[] student1..

[프로그래머스] 타겟 넘버 for JAVA _ DFS 알고리즘

https://programmers.co.kr/learn/courses/30/lessons/43165 코딩테스트 연습 - 타겟 넘버 n개의 음이 아닌 정수들이 있습니다. 이 정수들을 순서를 바꾸지 않고 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 programmers.co.kr 깊이/너비 우선 탐색 유형에 있는 문제이다. 문제를 보면 4 1 2 1 에서 +4,-4, +1-1, +2-2, +1-1을 모두 탐색해야 하므로 완전 탐색으로 살펴봐야 한다는 것은 알겠다. 여기서 조합을 어떻게 해야하냐가 문제인데 이렇게 풀었다...... 코드 class Solution { public static int answer = 0..

[프로그래머스] 구명보트 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번 만큼 돌게, 왼쪽부터 훑..