코딩테스트

[1주차] 코딩테스트 풀이 (2022.03.28~2022.04.01)

Jinyiji 2022. 4. 3. 23:58

JAVA로 코딩테스트 Level.1 문제 풀기 1주 차


2022년 3월 28일 월요일 / 짝수와 홀수

 

문제 설명

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

 

제한사항
  • num은 int 범위의 정수입니다.
  • 0은 짝수입니다.

 

입출력 예
 
num return
3 "Odd"
4 "Even"

 

문제 풀이 및 주석

class Solution {
    public String solution(int num) { // 정수 num
        String answer = ""; 
        if (num % 2 == 0) answer = "Even"; // 나머지 산술 연산자 사용, 짝수일 경우 (0 포함) Even 반환
        else answer = "Odd"; // 짝수가 아닐 경우 Odd 반환
        return answer;
    }
}

if문을 사용해서 정수 % 2 == 0 일 때, 정수 % 2!== 0 일 때 짝수와 홀수이기 때문에 결과 값을 받아 return 하였다.

 


 

2022년 3월 29일 화요일 / x만큼 간격이 있는 n개의 숫자

 

문제 설명

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

 

제한사항

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

 

입출력 예

 

x n answer
2 5 [2,4,6,8,10]
4 3 [4,8,12]
-4 2 [-4, -8]

 

문제 풀이 및 주석

class Solution {
    public long[] solution(int x, int n) { // 정수 x와 자연수 n을 입력 받음
        long[] answer = {};
        answer = new long[n];
        
        for (int i = 0; i < n; i++) {
            answer[i] = x * (long)(i + 1); // i를 long로 형변환
        }
        return answer;
    }
}

int를 long으로 형 변환하고 for문을 사용해서 n만큼 돌아갈 때마다 i에 +1을 더해줘 x와 곱해주었다.

 


 

2022년 3월 30일 수요일 / 평균 구하기

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

 

제한사항

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

 

입출력 예

 

arr return
[1,2,3,4] 2.5
[5,5] 5

 

문제 풀이 및 주석

class Solution {
    public double solution(int[] arr) {
       double answer = 0;
        for (int i = 0; i < arr.length; i++)
            answer += arr[i]; //배열의 모든 정수 더하기
        return answer/arr.length;
  }
}

배열의 모든 정수를 더하고 for문을 사용해서 배열을 반복문 돌리고 배열의 길이(arr.length)로 나누어 평균을 구하였다.

 


 

2022년 3월 31일 목요일 / 핸드폰 번호 가리기

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

 

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

 

 
입출력 예
 
phone_number return
"01033334444" "*******4444"
"027778888" "*****8888"

 

문제 풀이 및 주석

class Solution {
    public String solution(String phone_number) {
        char[] charactor = phone_number.toCharArray();
        
        for(int i = 0; i < charactor.length - 4; i++)  // 전화번호의 뒷 4자리를 제외
            charactor[i] = '*';  // 그 외 숫자 전부 *처리
        
        return String.valueOf(charactor);
    }
}

문자형 값을 처리하기 위해 char을 사용, for문을 사용해서 charactor의 뒷 4자리를 남긴 숫자를 모두 *표 처리하였다.

 


 

2022년 4월 1일 금요일 / 정수 제곱근 판별

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

 

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

 

입출력 예
 
n return
121 144
3 -1

 

입출력 예 설명

  1. 입출력 예#1
    121은 양의 정수 11의 제곱이므로, (11+1)를 제곱한 144를 리턴합니다.
  2. 입출력 예#2
    3은 양의 정수의 제곱이 아니므로, -1을 리턴합니다.

 

문제 풀이 및 주석

class Solution {
    public long solution(long n) {
        long answer = 0;
        int sqrt = (int) Math.sqrt(n); // sqrt 변수 선언
		if (Math.pow(sqrt, 2) == n) { // sqrtdml 제곱 지수가 2
			answer = (long) Math.pow(sqrt + 1, 2); //  정수 x의 제곱이라면 x+1의 제곱을 리턴
		} else //  정수 x의 제곱이 아니라면 -1을 리턴
			answer = -1;
        return answer;
    }
}

if문을 사용해서 Math.sqrt(n)를 통해 제곱근을 찾고 1에서 찾은 제곱근을 Math.pow()를 사용하여 제곱한 뒤 비교하였다. 정수 x의 제곱이라면 1에서 찾은 제곱근에 +1을 더한 후 제곱하여 return, 아닐 시 -1을 return 하였다.

 


 

JAVA로 코딩테스트 Level.1 문제 풀기 1주 차 완료!