본문 바로가기

혼자 코딩 공부하기/프로그래머스 코딩테스트

231218 프로그래머스 0단계 풀기

합성 수 찾기

// 합성수 : 약수의 개수가 3개 이상인 수
class Solution {
    public int solution(int n) {
        int answer = 0;
        int i = 4;
        while (i <= n) {
            if (i % 2 == 0 || i % 3 == 0 || (i % 5 == 0 && i != 5) || (i % 7 == 0 && i != 7)) {
                answer++;
            }
            i++;
        }
        return answer;
    }
}

 

중복된 문자 제거

class Solution {
    public String solution(String my_string) {
        String answer = "";
        for(int i = 0; i < my_string.length(); i++) {
            if (answer.contains(String.valueOf(my_string.charAt(i)))) {
                continue;
            }
            answer += my_string.charAt(i);
        }
        return answer;
    }
}

 

수열과 구간 쿼리 1

class Solution {
    public int[] solution(int[] arr, int[][] queries) {
        int[] answer = new int[arr.length];
        for (int i = 0; i < queries.length; i++) {
            for(int j = queries[i][0]; j <= queries[i][1]; j++) {
                arr[j] +=1;
            }
        }
        answer = arr.clone();
        return answer;
    }
}

 

이차원 배열 대각선 순회하기

class Solution {
    public int solution(int[][] board, int k) {
        int answer = 0;
        for(int i = 0; i < board.length; i++) {
            for(int j = 0; j < board[i].length; j++) {
                if (i + j <= k) {
                    answer += board[i][j];
                }
            }
        }
        return answer;
    }
}

 

2차원으로 만들기

class Solution {
    public int[][] solution(int[] num_list, int n) {
        int[][] answer = new int[num_list.length/n][n];
        int idx = 0;
        for(int i = 0; i < answer.length; i++) {
            for(int j = 0; j < answer[i].length; j++) {
                answer[i][j] = num_list[idx++];
            }
        }
        return answer;
    }
}

 

A 로 B 만들기

import java.util.Arrays;

class Solution {
    public int solution(String before, String after) {
        int answer = 1;
        
        char[] cb = before.toCharArray();
        char[] ca = after.toCharArray();
        
        Arrays.sort(cb);
        Arrays.sort(ca);
        
        for(int i = 0 ; i < cb.length; i++) {
            if (cb[i] != ca[i]) {
                answer = 0;
                break;
            }
        }
        return answer;
    }
}

 

팩토리얼

class Solution {
    public int solution(int n) {
        int answer = 0;
        int j = 1;
        for (int i = 1; i <= n; i*=j) {
            answer = j++;
        }
        return answer;
    }
}

 

모스부호 (1)

class Solution {
    public String solution(String letter) {
        String answer = "";
        String morse[] = letter.split(" ");
        String morse1[] = new String[] {".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."};
        
        for (int i = 0; i < morse.length; i++) {
            for(int j = 0; j < morse1.length; j++) {
                if (morse[i].equals(morse1[j])) {
                    answer += (char) (j + 97);
                }
            }
        }
        return answer;
    }
}

 

k 의 개수

class Solution {
    public int solution(int i, int j, int k) {
        int answer = 0;
        for (int a = i; a <= j; a++) {
            String s = String.valueOf(a);
            for(int h = 0; h < s.length(); h++) {
                if (s.charAt(h) == k + 48) {
                    answer++;
                }
            }
        }
        return answer;
    }
}

 

배열 만들기 5

import java.util.*;

class Solution {
    public int[] solution(String[] intStrs, int k, int s, int l) {
        ArrayList<Integer> answer = new ArrayList<>();
        
        for(int i = 0; i < intStrs.length; i++) {
            String sd = intStrs[i].substring(s, s+l);
            if (Integer.valueOf(sd) > k) {
                answer.add(Integer.valueOf(sd));
            }
        }
        
        int[] arr = new int[answer.size()];
        for(int i = 0; i < arr.length; i++) {
            arr[i] = answer.get(i);
        }
        
        return arr;
    }
}

 

가까운 수

class Solution {
    public int solution(int[] array, int n) {
        int answer = array[0];
        int temp = Math.abs(n - array[0]);
        for (int i = 0; i < array.length; i++) {
            if (temp > Math.abs(n - array[i])) {
                temp = Math.abs(n - array[i]);
                answer = array[i];
            }
        }
        for(int i = 0; i < array.length; i++) {
            if (temp >= Math.abs(n - array[i]) && answer > array[i]) {
                answer = array[i];
            }
        }
        return answer;
    }
}

 

진료순서 정하기

import java.util.Arrays;

class Solution {
    public int[] solution(int[] emergency) {
        int[] answer = new int[emergency.length];
        int[] temp = emergency.clone();
        Arrays.sort(temp);
        int k = 0;
        for(int i = 0; i < emergency.length; i++) {
            for (int j = temp.length - 1; j >= 0 ; j--) {
                if (temp[j] == emergency[i]) {
                    answer[k++] = temp.length - j;
                }
            }
        }
        return answer;
    }
}

 

숨어있는 숫자의 덧셈 (2)

class Solution {
    public int solution(String my_string) {
        int answer = 0;
        String s = "0";
        for(int i = 0; i < my_string.length(); i++) {
            if (Character.isDigit(my_string.charAt(i))) {
                s += my_string.charAt(i);
                if (i == my_string.length() - 1) {
                answer += Integer.parseInt(s); 
                }
            } else {
                answer += Integer.parseInt(s);
                s = "0";
            }
        }
        return answer;
    }
}

 

한 번만 등장한 문자

import java.util.Arrays;

class Solution {
    public String solution(String s) {
        String answer = "";
        String[] temp = s.split("");
        String[] temp2 = new String[temp.length];
        for(int i = 0; i < temp2.length; i++) {
            temp2[i] = "";
        }
        int idx = 0;
        A : for (int i = 0; i < s.length(); i++) {
            for(int j = 0; j < temp.length; j++) {
                if (i != j && temp[i].equals(temp[j])) {
                    continue A;
                }
            }
            temp2[idx++] = temp[i];
        }
        Arrays.sort(temp2);
        for(int i = 0; i < temp2.length; i++) {
            answer += temp2[i];
        }
        return answer;
    }
}