알고리즘

    프로그래머스 Level2 구명보트

    프로그래머스 Level2 구명보트

    문제보러가기 푸는데 정말 오래걸렸던 문제.. 이상한 포인트에서 헤매다가 문제를 다시 꼼꼼히 읽고 return 해야 되는 값이 무엇인지 파악했더니 풀 수 있었다. 내가 제출한 답은 아래와 같다. public int solution(int[] people, int limit) { int answer = people.length; // 구명보트는 최대 2명까지 // limit을 넘어가면 안됨. Arrays.sort(people); // 같이 탈 수 있는 최저 몸무게의 인덱스 int minIndex = 0; for (int i = people.length-1; i > 0; i--) { // 나 자신이라면 for문을 멈추기 if (minIndex == i) break; if (people[i] + people[m..

    프로그래머스 Level1 약수의 합

    프로그래머스 Level1 약수의 합

    프로그래머스 Level1 약수의 합 https://programmers.co.kr/learn/courses/30/lessons/12928 코딩테스트 연습 - 약수의 합 정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요. 제한 사항 n은 0 이상 3000이하인 정수입니다. 입출력 예 n return 12 28 5 6 입출력 예 설명 입출력 예 #1 12의 약수 programmers.co.kr 주어진 숫자 n의 약수들의 합을 구하는 문제다. 12의 약수라함은, 1, 2, 3, 4, 6, 12이다. (1, 12) (2, 6) (3, 4) 이렇게.. 따라서 n을 특정 수로 나누어 떨어진다면 특정수와 특정수의 몫을 더해주었다. 이렇게 되면 for문은 n까지 다 돌 필요..

    (java)자바 소수 구하기 - 에라토스테네스의 체

    (java)자바 소수 구하기 - 에라토스테네스의 체

    자바 소수 구하기 - 에라토스테네스의 체 📚 에라토스테네스의 체는 소수를 찾는 방법이다. 소수의 배수는 소수가 아니라는 점을 이용해서 소수인 수를 찾으면 그 수의 배수는 모두 지워주면서 남은 수 (소수)만을 반환하는 방법이다. 2는 소수이므로 오른쪽에 나열. 그리고 자기 자신을 제외한 2의 배수인 수들은 지운다. 이러한 과정을 반복하면 오른쪽에는 소수만이 남는다. 아래는 주어진 수 (n)까지의 소수의 개수를 구하는 문제다. (프로그래머스 level1 소수 찾기) public int solution(int n) { int answer = 0; boolean[] arr = new boolean[n+1]; //0, 1은 소수가 아니기 때문에 미리 false처리를 해줌 arr[0] = false; arr[1] ..

    프로그래머스 Level1 숫자 문자열과 영단어

    프로그래머스 Level1 숫자 문자열과 영단어

    프로그래머스 Level1 숫자 문자열과 영단어 https://programmers.co.kr/learn/courses/30/lessons/81301 코딩테스트 연습 - 숫자 문자열과 영단어 네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다. 다음은 숫자의 일부 자 programmers.co.kr public int solution(String s) { String[] engWord = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"}; for(int i = 0; i < engWord.length; i++..

    프로그래머스 Level1 다트 게임

    프로그래머스 Level1 다트 게임

    프로그래머스 Level1 다트 게임 https://programmers.co.kr/learn/courses/30/lessons/17682 코딩테스트 연습 - [1차] 다트 게임 programmers.co.kr 세번의 다트를 던지고 각각의 다트점수와 함께 부여되는 보너스, 옵션값들을 계산하여 합산 후 최종 점수를 내는 문제이다. "점수|보너스|[옵션]"으로 이루어진 문자열 3세트가 하나의 문자열에 합쳐져서 들어온다. 제일 먼저, 들어온 문자열을 3세트로 나누는 과정이 필요했고 그 후 점수와 보너스 & 옵션값을 나누는 과정이 필요했다. String[{점수}, {보너스&옵션값}] 처음 풀려고 했던 방식은 HashMap을 선언하여 Key 값에 점수를 넣고 Value값에 보너스와 옵션값을 넣으려고 했으나 Map은..

    프로그래머스 Level1 체육복

    프로그래머스 Level1 체육복

    import java.util.ArrayList; class Solution { public int solution(int n, int[] lost, int[] reserve) { ArrayList list = new ArrayList(); int count = 0; for(int i = 0; i < lost.length; i++) { boolean check = true; for(int j = 0; j < reserve.length; j++) { if(lost[i] == reserve[j]) { reserve[j] = -1; count++; check = false; break; } } if(check) list.add(lost[i]); } for(int i = 0; i < list.size(); i+..

    프로그래머스 Level1 2016

    프로그래머스 Level1 2016

    문제 보러가기 class Solution { public String solution(int a, int b) { String[] dow = new String[] {"THU","FRI","SAT","SUN","MON","TUE","WED"}; int[] month = new int[] {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; int sum = 0; for(int i = 0; i < a-1; i++) { sum += month[i]; } sum += b; return dow[(sum%7)]; } } 2016년 1월 1일이 금요일부터 시작되니까 index 1번에 FRI가 오도록 배열을 만들어주었고, 2016년의 각 월의 일수를 담아서 배열로 만들어주었다. 그..

    프로그래머스 Level1 수박수박수박수박수박수?

    프로그래머스 Level1 수박수박수박수박수박수?

    문제 보러가기 class Solution { public String solution(int n) { StringBuffer answer = new StringBuffer(); for(int i = 0; i < n/2; i++) { answer.append("수박"); } if(n%2!=0) return String.valueOf(answer.append("수")); return String.valueOf(answer); } } n의 반으로 나눈 수 만큼 반복 해주고 홀수면 마지막에 "수" 글자를 붙여주는 방식으로 했다. 연산자를 사용하면 객체를 계속해서 생성해내기 때문에 속도문제로 StringBuffer를 쓰면 좋다는 말을 들어서 StringBuffer 객체를 만들고 append 했다. 💡 java.l..