매일 Algorithm

신재원·2023년 3월 9일
0

Algorithm

목록 보기
60/243

프로그래머스 (LEVEL 1)

class Solution {
    public String solution(int[] food) {
        String answer = "";

        String left ="";
        String right = "";

        // food의 첫번째 인덱스는 무조건 1이다. (0은 한개만존재)
        for(int i = 1; i < food.length; i++){
            if(food[i] != 0){
                // food의 인덱스 데이터값이 왼쪽 오른쪽으로 짝수갯수가 담긴다.
                for(int j = 0; j < food[i] / 2; j++){
                    left += String.valueOf(i);
                    right += String.valueOf(i);
                }
            }
        }
        answer = left + "0";

        // right에 담긴 문자열은 뒤집어 줘야된다.
        for(int k = right.length() - 1 ; k >=0; k--){
            answer += right.substring(k, k+1);
        }

        return answer;
    }
}

프로그래머스 (LEVEL 1)

import java.util.HashMap;
import java.util.Map;

class Solution {
    public int[] solution(String s) {
        String[] split = s.split("");
        int[] answer = new int[s.length()];

        Map<String, Integer> map = new HashMap<>();

        for (int i = 0; i < s.length(); i++) {
            // map 객체에 값이 put 되어있지 않은경우 -1로 초기화
            if (map.get(split[i]) == null) {
                answer[i] = -1;
            } else {
                // get은 value값을 뱉는다. key값에따라
                answer[i] = i - map.get(split[i]);
            }
            // map 객체의 value값을 담아준다. 
            // (인덱스 값 차이를 구해야되기 때문에 value에 i를담는다)
            map.put(split[i], i);
        }

        return answer;
    }
}

프로그래머스 (LEVEL 1)

class Solution {
    public int solution(int n) {
        int answer = 0;

        for (int i = 2; i <= n; i++) {
            boolean check = true;
            // Math.sqrt() = 루트씌인 값을 뱉는다.
            for (int j = 2; j <= Math.sqrt(i); j++) {
                // sqrt의 값까지 검증을 한후 소수를 판단한다.
                if (i % j == 0) {
                    check = false;
                    // 소수를 찾게되면 바로 break
                    break;

                }
            }
            if (check) {
                answer++;
            }
        }
        return answer;
    }
}

프로그래머스 (LEVEL 1)

import java.util.*;
class Solution {
    public int solution(int k, int m, int[] score) {
        int answer = 0;
        // k 최대점수
        Integer [] arr = new Integer[score.length];

        for(int i = 0; i < score.length; i++){
            arr[i] = score[i];
        }
        Arrays.sort(arr, Comparator.reverseOrder());

        int temp = 0;
        while(true){
            if(temp + m > score.length){
                break;
            }

            // 최소점수 * 사과 갯수
            answer += arr[temp + m - 1] * m;

            // 인덱스를 m만큼 증가 시켜준다.
            temp += m;
        }


        return answer;
    }
}

0개의 댓글