본문 바로가기

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

231213 코딩테스트 풀기

프로그래머스

qr code

public String solution(int q, int r, String code) {
        String answer = "";
        
        for(int i = 0; i < code.length(); i++) {
            if(i % q == r) {
                answer += code.charAt(i);
            }
        }
        return answer;
    }

 

커피 심부름

public int solution(String[] order) {
        int answer = 0;
        
        for(String s : order) {
            if (s.contains("americano") || s.contains("anything")) {
                answer += 4500;
            } else {
                answer += 5000;
            }
        }
        return answer;
    }

 

특정 문자열로 끝나는 가장 긴 부분 확인

public String solution(String myString, String pat) {
        String answer = "";
        answer = myString.substring(0, myString.lastIndexOf(pat) + pat.length());
        return answer;
    }

 

배열의 원소만큼 추가하기

public int[] solution(int[] arr) {
        int sum = 0;
        for(int i : arr) {
            sum += i;
        }
        int[] answer = new int[sum];
        sum = 0;
        for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j < arr[i]; j++) {
                answer[sum] = arr[i];
                sum++;
            }
        }
        return answer;
    }

 

배열의 길이에 따라 다른 연산하기

public int[] solution(int[] arr, int n) {
        int[] answer = {};
        if (arr.length % 2 == 0) {
            for(int i = 1; i < arr.length; i+=2) {
                arr[i] += n;
            }
        } else {
            for(int i = 0; i < arr.length; i+=2) {
                arr[i] += n;
            }
        }
        return arr;
    }

 

배열 비교하기

public int solution(int[] arr1, int[] arr2) {
        int answer = 0;
        int sum1 = 0;
        int sum2 = 0;
        if (arr1.length != arr2.length) {
            if (arr1.length > arr2.length) {
                answer = 1;
            }
            else {
                answer = -1;
            }
            return answer;
        }
        for(int i : arr1) {
            sum1 += i;
        }
        for(int i : arr2) {
            sum2 += i;
        }
        if (sum1 == sum2) {
            answer = 0;
        } else if (sum1 > sum2) {
            answer = 1;
        } else if (sum1 < sum2) {
            answer = -1;
        }
        return answer;
    }

 

빈 배열에 추가, 삭제하기

아직 ArrayList를 기본 배열로 바꾸는 법을 모름

public int[] solution(int[] arr, boolean[] flag) {
        ArrayList<Integer> list = new ArrayList<>();
        int j = 0;
        for(boolean b : flag) {
            if (b) {
                for(int i = 0; i < arr[j] * 2; i++) {
                    list.add(arr[j]);
                }
            } else {
                for(int i = 0; i < arr[j]; i++) {
                    list.remove(list.size() - 1);
                }
            }
            j++;
        }        
        int[] answer = new int[list.size()];
        for(int i = 0; i < answer.length; i++) {
            answer[i] = list.get(i);
        }
        return answer;
    }