짝수와 홀수

문제 설명

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


제한 조건

  • num은 int 범위의 정수입니다.
  • 0은 짝수입니다.


입출력 예

numreturn
3"Odd"
4"Even"





기본 코드

class Solution {
    public String solution(int num) {
        String answer = "";
        return answer;
    }
}



정답 코드

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



문제 풀이

짝수와 홀수를 구분하는 기본적인 방법은 2로 나눴을 때 0인지 1인지 구분하는 것이다. 나머지가 0이면 짝수이고 1이면 홀수이다. 따라서 들어온 num을 삼항연산자를 사용하여 나머지가 0일 경우 "Even"을, 0이 아닐 경우 "Odd"를 return 했다.



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

문제 설명

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


제한 조건

  • x는 -10000000 이상, 10000000 이하인 정수입니다.
  • n은 1000 이하인 자연수입니다.


입출력 예

xnanswer
25[2,4,6,8,10]
43[4,8,12]
-42[-4,-8]





기본 코드

class Solution {
    public long[] solution(int x, int n) {
        long[] answer = {};
        return answer;
    }
}



정답 코드

class Solution {
    public long[] solution(long x, int n) {
        long [] answer = new long[n];
        
        for(int i=1; i<=n; i++)
            answer[i-1] = x*i;
         
        return answer;
    }
}



문제 풀이

x만큼 간격이 있다. 라는 말은 수와 수 사이의 간격이 x만큼의 크기라는 뜻이다. 총 n개의 숫자를 return 해야하기 때문에 배열의 방 크기를 n으로 잡았다. 또한 반복문도 n번만큼 돌린다. 예시로 n은 3, x는 3로 정한다.

ianswer[i-1]
13
26
39

위와 같이 answer의 방들에 있는 값들은 x만큼 커지는 것을 볼 수 있다. 따라서 i값과 x를 곱해주면 원하는 값을 얻을 수 있다.

문제 링크 🔗 : x만큼 간격이 있는 n개의 숫자



평균 구하기

문제 설명

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


제한 조건

  • arr은 길이 1 이상, 100 이하인 배열입니다.
  • arr의 원소는 -10,000 이상 10,000 이하인 정수입니다.


입출력 예

arrreturn
[1,2,3,4]2.5
[5,5]5





기본 코드

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



정답 코드

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



문제 풀이

값이 넘어오는 arr 안의 원소들은 정수이기 때문에 반복문을 int로 돌린다. 평균을 구하는 방법은 배열의 원소들의 합을 배열의 길이로 나눠서 구할 수 있다. 따라서 배열 안에 원소값을 더해준 answer에 배열의 길이인 arr.length로 나누어 평균을 구한다.

문제 링크 🔗 : 평균 구하기



핸드폰 번호 가리기

문제 설명

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


제한 조건

  • phone_number는 길이 4 이상, 20이하인 문자열입니다.



입출력 예

phone_numberreturn
"01033334444""***4444"
"027778888""*8888"





기본 코드

class Solution {
    public String solution(String phone_number) {
        String answer = "";
        return answer;
    }
}



정답 코드

class Solution {
    public String solution(String phone_number) {
        StringBuilder sb = new StringBuilder(phone_number);
        
        for(int i=0; i<phone_number.length()-4; i++)
            sb.setCharAt(i,'*');
            
        return sb.toString();
    }
}



문제 풀이

전화번호의 뒷자리 4개를 제외하고 *로 바꿔야 하기 때문에 반복문을 문자열의 길이에서 4를 뺀 만큼 돌려준다. StringBuilder의 메서드 중 하나인 setCharAt()을 사용하여 해당하는 문자열의 인덱스를 *로 바꿔줬다.


StringBuilder.setCharAt(index, char) : index에 해당하는 값을 char 문자로 바꾼다.



문제 링크 🔗 : 핸드폰 번호 가리기



정수 제곱근 판별

문제 설명

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


제한 조건

  • n은 1이상, 50000000000000 이하인 양의 정수입니다.



입출력 예

nreturn
121144
3-1





기본 코드

class Solution {
    public long solution(long n) {
        long answer = 0;
        return answer;
    }
}



정답 코드

class Solution {
    public long solution(long n) {
        
        double x = Math.sqrt(n);
        if(x == (int)x) {
            return (long)Math.pow((int)(x+1),2);
        }
        return -1;
    }
}



문제 풀이

정수의 제곱근을 판별할 때는 Math.sqrt(num)을 사용한다. return 값이 double이기 때문에 double 타입으로 x를 선언해준다.
정수의 제곱근은 정수뿐만 아니라 루트값이 나오기도 한다. 그래서 x를 int로 형변환했을 때 값이 다를 수도 있다. 따라서 x값과 int형변환한 x의 값을 체크하면 제곱근인지 확인할 수 있다.


제곱근이 정수라면 Math.pow(num, num)을 사용해 제곱근에 1을 더한 값을 제곱해준다. 첫번째 인수인 num은 제곱해줄 수이고, 두번째 인수 num은 곱해줄 횟수이다. return 값이 int의 범위를 넘어갈 수도 있기 때문에 long으로 타입을 변환해준다.

  • Math.sqrt(n) : n의 제곱근을 구한다. return 타입은 double이다.
  • Math.pow(x,y) : x를 y번 제곱한 수를 구한다. x는 거듭제곱할 수이고 y는 거듭제곱할 횟수이다. x와 y는 정수가 아닌 실수도 가능하다. return 타입은 double이다.



문제 링크 🔗 : 정수 제곱근 판별

profile
헐 제가 회사를 다니면서 개발을 하고 있어요 이게 무슨 일이죠?

0개의 댓글