매일 Algorithm

신재원·2023년 5월 17일
0

Algorithm

목록 보기
124/243

프로그래머스 (전국 대회 선발 고사)

import java.util.*;

public class problem415 {
    class Solution {
        public int solution(int[] rank, boolean[] attendance) {
            List<Integer> result = new ArrayList<>();
            Map<Integer, Integer> map = new HashMap<>();

            int answer = 0;

            for (int i = 0; i < attendance.length; i++) {
                map.put(rank[i], i); // map객체에 rank의 인덱스값 저장

                if (attendance[i]) {
                    result.add(rank[i]);
                }
            }
            // 내림차순으로 정렬하여 높은 등수를 확인
            Collections.sort(result);

            for (int i = 0; i < 3; i++) {
                if (i == 0) {
                    answer += 10000 * map.get(result.get(i));
                } else if (i == 1) {
                    answer += 100 * map.get(result.get(i));
                } else {
                    answer += map.get(result.get(i));
                }
            }
            return answer;
        }
    }
}

프로그래머스 (OX퀴즈)

public class problem416 {
    class Solution {
        public String[] solution(String[] quiz) {
            String[] answer = new String[quiz.length];

            for (int i = 0; i < quiz.length; i++) {
                String[] numbers = quiz[i].split(" ");
                int num1 = Integer.parseInt(numbers[0]); // 첫번째 숫자 저장
                int num2 = Integer.parseInt(numbers[2]); // 두번째 숫자 저장
                int result = Integer.parseInt(numbers[4]); // 결과값 저장

                // 연산자 저장
                String operator = numbers[1];

                // 연산자가 "-" 일경우
                if (operator.equals("-")) {
                    if (num1 - num2 == result) {
                        answer[i] = "O";
                    } else {
                        answer[i] = "X";
                    }
                }
                // 연산자가 "+" 일경우
                else {
                    if (num1 + num2 == result) {
                        answer[i] = "O";
                    } else {
                        answer[i] = "X";
                    }
                }
            }
            return answer;
        }
    }
}

프로그래머스 (코드 처리하기)

public class problem417 {
    class Solution {
        public String solution(String code) {
            StringBuilder build = new StringBuilder();
            int mode = 0; // 초기 mode는 0
            for (int i = 0; i < code.length(); i++) {
                // mode가 0일경우
                if (mode == 0) {
                    // code 문자열에서 1이 아닐경우 1은 모드변환
                    if (code.charAt(i) != '1') {
                        if (i % 2 == 0) {
                            build.append(code.charAt(i));
                        }
                    } else {
                        mode = 1; // codes의 1이 있을경우 mode 변환
                    }
                }
                // mode가 1인경우
                else {
                    if (code.charAt(i) != '1') {
                        if (i % 2 != 0) {
                            build.append(code.charAt(i));
                        }
                    } else {
                        mode = 0;
                    }
                }
            }
            // 빈문자열일경우
            if (build.length() == 0) {
                return "EMPTY";
            } else {
                return build.toString();
            }
        }
    }
}

프로그래머스 (연속된 수의 합)

public class problem418 {
    class Solution {
        public int[] solution(int num, int total) {
            int[] answer = new int[num];
            // 점화식 도출
            int start = total / num - (num - 1) / 2;
            for (int i = 0; i < answer.length; i++) {
                answer[i] = start + i;
            }

            return answer;
        }
    }
}

0개의 댓글