CODEKATA 26 ~ 30

Tak Jeon·2024년 12월 31일

알고리즘

목록 보기
51/101

26번 음양 더하기

import java.util.stream.*;

class Solution_for {

        public int solution(int[] absolutes, boolean[] signs) {
            int answer = 0;
            for(int i = 0 ; i < absolutes.length ; i++){
                answer += signs[i] ? absolutes[i] : -1 * absolutes[i];
            }
            return answer;
        }

    }

class Solution_stream {

        public int solution(int[] absolutes, boolean[] signs) {
            return IntStream.range(0, absolutes.length)
                    .map(i -> signs[i] ? absolutes[i] : -absolutes[i])
                    .sum();
        }
    }

27번 핸드폰 번호 가리기

import java.util.stream.*;

class Solution_for {
        public String solution(String phone_number) {
            String answer = "";
            for(int i = 0 ; i < phone_number.length() - 4 ; i++){
                answer = answer + "*";
            }
            for(int i = phone_number.length() - 4 ; i < phone_number.length() ; i++){
                answer += phone_number.charAt(i);
            }

            return answer;
        }
    }

class Solution_stream {
        public String solution(String phone_number) {
            String maskedPart = IntStream.range(0, phone_number.length() - 4)
                    .mapToObj(i -> "*")
                    .collect(Collectors.joining());

            String visiblePart = IntStream.range(phone_number.length() - 4, phone_number.length())
                    .mapToObj(i -> String.valueOf(phone_number.charAt(i)))
                    .collect(Collectors.joining());

            return maskedPart + visiblePart;
        }
    }

28번 없는 숫자 더하기

 class Solution_for {
        public int solution(int[] numbers) {
            int answer = 0;
            boolean[] check = new boolean[10];
            for(int cur : numbers){
                check[cur] = true;
            }
            for(int i = 0 ; i < 10 ; i++){
                answer += check[i] ? 0 : i;
            }
            return answer;
        }
    }

class Solution_stream {
        public int solution(int[] numbers) {
            boolean[] check = new boolean[10];
            for(int cur : numbers){
                check[cur] = true;
            }
            return IntStream.range(0, check.length)
                    .map(i -> check[i] ? 0 : i)
                    .sum();
        }
    }

29번 제일 작은 수 제거하기

class Solution {
        public int[] solution(int[] arr) {
            int min = Integer.MAX_VALUE;
            for(int cur : arr){
                min = Math.min(cur, min);
            }

            if(arr.length == 1){
                int[] answer = {-1};
                return answer;
            }else{
                int idx = 0;
                int[] answer = new int[arr.length - 1];
                for(int cur : arr){
                    if(cur != min){
                        answer[idx++] = cur;
                    }
                }
                return answer;
            }
        }
    }

30번 가운데 글자 가져오기

class Solution {
        public String solution(String s) {
            String answer = "";
            int mid = (s.length() - 1) / 2;
            answer = s.length() % 2 != 0 ? s.substring(mid, mid + 1) : s.substring(mid, mid + 2);
            return answer;
        }
    }
profile
문제 해결을 좋아하는 개발자 입니다 :)

0개의 댓글