1. 제일 작은 수 제거하기

문제 설명

정수를 저장한 배열, arr 에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성해주세요. 단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴하세요. 예를 들어 arr이 [4,3,2,1]인 경우는 [4,3,2]를 리턴 하고, [10]면 [-1]을 리턴 합니다.

제한 조건

🔹 arr은 길이 1 이상인 배열입니다.
🔹 인덱스 i, j에 대해 i ≠ j이면 arr[i] ≠ arr[j] 입니다.

기본 제공 코드

class Solution {
    public int[] solution(int[] arr) {
        int[] answer = {};
        return answer;
    }
}

내 풀이

public class Solution16 {
    public int[] solution(int[] arr) {
        int[] answer = {};
        int min=arr[0];
        if(arr.length!=1) {
            answer=new int[arr.length-1];
            for(int i=1; i<arr.length; i++) {
                if(min>arr[i])
                    min=arr[i];
            }
            int k=0;
            for(int j=0; j<arr.length; j++) {
                if(min==arr[j])
                    continue;
                else
                    answer[k++]=arr[j];
            }
        }
        else {
            answer=new int[1];
            answer[0]=-1;
        }
        return answer;
    }
}

풀이 설명

만약 arr의 길이가 1이라면 answer의 길이를 1로 정해주고 -1을 넣어준다. 하지만 만약 arr의 길이가 1이 아니라면 answer의 길이를 arr의 길이에서 1을 뺀 만큼으로 지정해주고 arr 배열 안에서 값들을 min과 비교해가며 제일 작은 수를 구한다. 그 다음 for문을 통해 min일 경우 continue를 써서 패스하고 나머지 값들은 answer 안에 넣어준다.


2. 없는 숫자 더하기

문제 설명

0부터 9까지의 숫자 중 일부가 들어있는 정수 배열 numbers가 매개변수로 주어집니다. numbers에서 찾을 수 없는 0부터 9까지의 숫자를 모두 찾아 더한 수를 return 하도록 solution 함수를 완성해주세요.

제한 조건

🔹 1 ≤ numbers의 길이 ≤ 9
🔹 0 ≤ numbers의 모든 원소 ≤ 9
🔹 numbers의 모든 원소는 서로 다릅니다.

기본 제공 코드

class Solution {
    public int solution(int[] numbers) {
        int answer = -1;
        return answer;
    }
}

내 풀이

public class Solution17 {
    public int solution(int[] numbers) {
        int sum=0;
        for(int i=0; i<numbers.length; i++) {
            sum+=numbers[i];
        }
        int answer=45-sum;

        return answer;
    }
}

풀이 설명

0~9까지의 합이 45이므로 45에서 numbers 안에 있는 값들의 합을 뺀 값을 answer에 넣어줘서 리턴하였다.


3. 약수의 개수와 덧셈

문제 설명

두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주세요.

제한 조건

🔹 1 ≤ left ≤ right ≤ 1,000

기본 제공 코드

class Solution {
    public int solution(int left, int right) {
        int answer = 0;
        return answer;
    }
}

내 풀이

public class Solution18 {
    public int solution(int left, int right) {
        int answer = 0;
        int cnt;
        for(int i=left; i<=right; i++) {
            cnt=0;
            for(int j=1; j<=i; j++) {
                if(i%j==0)
                    cnt++;
            }
            if(cnt%2==0)
                answer+=i;
            else
                answer-=i;
        }
        return answer;
    }
}

풀이 설명

i를 left부터 right까지 먼저 돌리고 안에서 1부터 i만큼의 수로 i를 나눴을 때 0이면 cnt를 증가하게 합니다. for문을 나왔을 때 만약 cnt가 짝수이면 answer에 더하고 홀수이면 answer에서 뺍니다.


4. 서울에서 김서방 찾기

문제 설명

String형 배열 seoul의 element중 "Kim"의 위치 x를 찾아, "김서방은 x에 있다"는 String을 반환하는 함수, solution을 완성하세요. seoul에 "Kim"은 오직 한 번만 나타나며 잘못된 값이 입력되는 경우는 없습니다.

제한 조건

🔹 seoul은 길이 1 이상, 1000 이하인 배열입니다.
🔹 seoul의 원소는 길이 1 이상, 20 이하인 문자열입니다.
🔹 "Kim"은 반드시 seoul 안에 포함되어 있습니다.

기본 제공 코드

class Solution {
    public String solution(String[] seoul) {
        String answer = "";
        return answer;
    }
}

내 풀이

public class Solution19 {
    public String solution(String[] seoul) {
        String answer = "";
        String str="Kim";
        for(int i=0; i<seoul.length; i++) {
            if(str.equals(seoul[i])) {
                answer="김서방은 "+i+"에 있다";
                break;
            }
            else
                continue;
        }
        return answer;
    }
}

풀이 설명

seoul 배열의 길이만큼 for문을 돌려서 문자열을 비교하는 equals()를 사용하여 "Kim"이 들어있는 str과 같으면 i값을 넣어 "김서방은 i에 있다"를 반환해준다.


5. 전화번호 목록

문제 설명

전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다.

구조대 : 119
박준영 : 97 674 223
지영석 : 11 9552 4421

전화번호부에 적힌 전화번호를 담은 배열 phone_book 이 solution 함수의 매개변수로 주어질 때, 어떤 번호가 다른 번호의 접두어인 경우가 있으면 false를 그렇지 않으면 true를 return 하도록 solution 함수를 작성해주세요.

제한 조건

🔹 phone_book의 길이는 1 이상 1,000,000 이하입니다.
🔹 각 전화번호의 길이는 1 이상 20 이하입니다.
🔹 같은 전화번호가 중복해서 들어있지 않습니다.

기본 제공 코드

class Solution {
    public boolean solution(String[] phone_book) {
        boolean answer = true;
        return answer;
    }
}

내 풀이

public class Solution20 {
    public boolean solution(String[] phone_book) {
        boolean answer = true;
        Arrays.sort(phone_book);
        for(int i=0; i<phone_book.length-1; i++) {
            if(phone_book[i+1].startsWith(phone_book[i]))
                answer = false;
        }
        return answer;
    }
}

풀이 설명

Arrays.sort()를 사용하여 오름차순으로 정렬을 해줍니다. i가 0일 때부터 phone_book의 길이에서 1을 뺀 길이까지 for문을 돌려 i와 (i+1)값을 비교합니다. 만약 phone_book[i+1]이 phone_book[i]의 값으로 시작하면 answer에 false를 넣어줍니다.만약 접두어가 없다면 true였던 answer 그대로를 반환해줍니다.

startsWith()는 만약 str1.startsWith(str2)라고 써주었을 때 str1이 str2의 값으로 시작하는지를 알 수 있는 함수입니다.

profile
코딩이라는 감옥에 갇혀 사는 삶

3개의 댓글

comment-user-thumbnail
2022년 4월 23일

제일 작은 수 제거하기 문제 잘 풀었네요!! 풀이가 좋아요

답글 달기
comment-user-thumbnail
2022년 4월 24일

전보다 훨씬 정리된 느낌의 글이라 읽는 내내 눈에 확 들어오네요~!

답글 달기
comment-user-thumbnail
2022년 4월 24일

본인처럼 레이아웃이 깔금하네요 멋집니다! 시험잘보세요~!

답글 달기
Powered by GraphCDN, the GraphQL CDN