1주차 문제풀이

주완·2022년 4월 2일
0

CodingTest

목록 보기
1/4
2022.03.28

1. 짝수와 홀수

문제

정수 num이 짝수일 경우 "Even"을 반환하고 홀수인 경우 "Odd"를 반환하는 함수, solution을 완성해주세요.

🔎 기본제공
class Solution {
    public String solution(int num) {
        String answer = "";
        return answer;
    }
}

풀이

📃 제출코드

class Solution {
    public String solution(int num) {
        if(num%2==0) return "Even";
        else return "Odd";
    }
}

💡 전체코드

import java.util.Scanner;

public class Solution {
    static String solution(int num) {
        if(num%2==0) return "Even";
        else return "Odd";
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int num = sc.nextInt();
        System.out.println(solution(num));

    }
}

📌 풀이설명

짝수와 홀수를 구분하기 위해 if else 조건문나머지 연산자(%)를 사용하여 나머지가 0일 경우 짝수로 Even을 return 시키고, 0이 아닌 경우에는 Odd를 return 시켰다.
삼항연산자(조건 ? ture값 : flase값)를 활용하여 풀 수도 있다.

class Solution {
    public String solution(int num) {
         return (num % 2 == 0)?"Even":"Odd";
    }
}
2022.03.29

2. x만큼 간격이 있는 n개의 숫자

문제

함수 solution은 정수 x와 자연수 n을 입력 받아, x부터 시작해 x씩 증가하는 숫자를 n개 지니는 리스트를 리턴해야 합니다. 다음 제한 조건을 보고, 조건을 만족하는 함수, solution을 완성해주세요.

🔎 기본제공
class Solution {
    public long[] solution(int x, int n) {
        long[] answer = {};
        return answer;
    }
}

풀이

📃 제출코드

class Solution {
    public long[] solution(int x, int n) {
        long[] answer = new long[n];
        long num = x;
        for(int i=0; i<answer.length; i++){
            answer[i]=num;
            num+=x;
        }
        return answer;
    }
}

💡 전체코드

import java.util.Scanner;

public class Solution {
    static long[] solution(int x, int n) {
        long[] answer = new long[n];
        long num = x;
        for(int i=0; i<answer.length; i++){
            answer[i]=num;
            num+=x;
        }
        return answer;
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int x = sc.nextInt();
        int n = sc.nextInt();
        long[] arr = solution(x,n);
        for(int i=0; i<arr.length; i++)
            System.out.print(arr[i]+" ");

    }
}

📌 풀이설명

배열을 선언하여 x만큼 차이나는 값을 저장할 수 있는 방을 만들었다. for문을 활용하여 각 방에 x부터 x*n까지 값을 넣었다. 배열을 return하므로 메인에 배열을 생성하여 answer값을 대입해주고 출력하였다.

2022.03.30

3. 평균 구하기

문제

정수를 담고 있는 배열 arr의 평균값을 return하는 함수, solution을 완성해보세요.

🔎 기본제공
class Solution {
    public double solution(int[] arr) {
        double answer = 0;
        return answer;
    }
}

풀이

📃 제출코드

class Solution {
    public double solution(int[] arr) {
        double answer = 0;
        int sum = 0;
        for(int i=0; i<arr.length; i++)
            sum += arr[i];
        answer = (double) sum/ arr.length;
        return answer;
    }
}

💡 전체코드

import java.util.Scanner;

public class Solution {
    static double solution(int[] arr) {
        double answer = 0;
        int sum = 0;
        for(int i=0; i<arr.length; i++)
            sum += arr[i];
        answer = (double) sum/ arr.length;
        return answer;
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("입력 개수");
        int[] arr = new int[sc.nextInt()];
        for(int i=0; i< arr.length; i++)
            arr[i] = sc.nextInt();
        System.out.println(solution(arr));
    }
}

📌 풀이설명

메인에서 배열의 길이를 입력 받아 생성하고, for문을 돌려 값을 입력한다. 함수에서 배열을 넘겨 for문을 통해 합계를 구하고, 합계를 통해 평균을 구했다.

2022.03.31

4. 핸드폰 번호 가리기

문제

프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다.
전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요.

🔎 기본제공
class Solution {
    public String solution(String phone_number) {
        String answer = "";
        return answer;
    }
}

풀이

📃 제출코드

class Solution {
    public String solution(String phone_number) {
        String answer ="";
        String[] arr= phone_number.split("");
        for(int i=0; i<phone_number.length()-4; i++)
            arr[i] = "*";
        answer = String.join("",arr);
        return answer;
    }
}

💡 전체코드

import java.util.Scanner;

public class Solution_0331 {
    public static String solution(String phone_number) {
        String answer ="";
        String[] arr= phone_number.split("");
        for(int i=0; i<phone_number.length()-4; i++)
            arr[i] = "*";
        answer = String.join("",arr);
        return answer;
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String phone_num = sc.next();
        System.out.println(solution(phone_num));
    }
}

📌 풀이설명

문자열을 배열에 넣기 위해서 split()를 이용해 문자열을 하나씩 분리하여 넣어주었다. 그리고 for문을 사용해 뒤에 4자리를 제외한 앞 자리 숫자를 *로 바꾸어 배열에 넣어주었다. 그 후 문자열로 return 해주기 위해서 String.join()을 사용해 문자열 배열을 하나의 문자열로 합쳤다.

split 함수 : 정규표현식, 특정 문자를 기준으로 문자열을 나누어 배열에 넣음 | ex) ","(쉼표) ""(문자 하나씩) " "(띄어쓰기) 등
String str = "부산,제주도,가평,홍천";
String[] arr = str.split(",");
결과 : arr[1] = "부산", arr[2] = "제주도" ...
String.join 함수
String str = {"부산", "제주도", "가평","홍천"};
string str = String.Join(separator, value); 
2022.04.01

5. 정수 제곱근 판별

문제

임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다.
n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요.

🔎 기본제공
class Solution {
    public long solution(long n) {
        long answer = 0;
        return answer;
    }
}

풀이

📃 제출코드

class Solution {
    public long solution(long n) {
        long answer = 0;
        long num = (long) Math.sqrt(n);
        if(n%Math.sqrt(n)==0) answer = (num+1)*(num+1);
        else answer = -1;
        return answer;
    }
}

💡 전체코드

import java.util.Scanner;

public class Solution {
    public static long solution(long n) {
        long answer = 0;
        long num = (long) Math.sqrt(n);
        if(n%Math.sqrt(n)==0) answer = (num+1)*(num+1);
        else answer = -1;
        return answer;
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        long n = sc.nextLong();
        System.out.println(solution(n));
    }
}

📌 풀이설명

Math.sqrt()를 활용해 입력받은 수를 넘겨 받아 제곱근을 구했고, 제곱근+1의 제곱을 구하기 위해 num 변수에 저장하였다. 입력받은 수의 제곱근이 정수인지 아닌지를 알기 위해서 입력받은 수와 제곱근의 나머지를 구해서 if 조건문을 이용해 return값을 결정할 수 있도록 하였다.

profile
배움을 기록하자

6개의 댓글

comment-user-thumbnail
2022년 4월 2일

join 쓰는 건 생각도 못했는데 좋은 방법이네요!

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

제출코드로만 끝내는 게 아니라 전체코드도 짠 거 멋져요!

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

수업시간에 삼항연산자를 배운지는 모르겠지만 이런 시도 너무 좋았습니다.
글도 깔끔하고 반복되는 부분이 많아서 보기 좋았습니다.
앞으로도 열심히 해주세요!

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

join과 split이라는 새로운 방법을 알고 가게 되네요! 멋집니다!

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

하나의 문제를 두 가지 방법으로 푸는게 좋은 것 같습니다!

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

전체코드까지 작성하셔서 더 이해가 잘 되는 것 같아요!

답글 달기