프로그래머스 문제풀이/알고리즘 (JAVA)

[JAVA] 프로그래머스 알고리즘 문제풀이 - Level 0 (25~32번 문제풀이)

남건욱 2023. 9. 21. 11:29
반응형
25. 짝수 홀수 개수

문제

class Solution {
    public int[] solution(int[] num_list) {
        int[] answer = new int[2];
        int cnt=0;
        int cnt2=0;
        
        for(int a : num_list){
            if(a%2 == 0) cnt++;
            else cnt2++;
        }
        
        answer[0] = cnt;
        answer[1] = cnt2;
        
        
        return answer;
    }
}

<작성한 코드>

num_list의 원소들을 하나씩 꺼내서 a에 넣어주었고 값을 검증했다. 만약 짝수면 cnt를 1 증가, 홀수면 cnt2를 1 증가시켜서 각각의 개수를 구한 뒤 answer에 넣어주었다.

 

 

 

 

26. 문자 반복 출력하기

문제

class Solution {
    public String solution(String my_string, int n) {
        StringBuilder answer = new StringBuilder();
        
        for(int i=0; i<my_string.length(); i++){
            for(int j=0; j<n; j++){
                answer.append(my_string.charAt(i));
            }
        }
        
        return answer.toString();
    }
}

<작성한 코드>

0부터 입력받은 배열의 길이만큼 반복문을 설정하고 그 안에서 0부터 입력받은 n까지 한번더 반복하도록 하였다. answer을 StringBuilder으로 선언해 주었고 배열의 첫 번째 값부터 n번만큼 추가해 주고 toString을 통해 문자열로 만들어서 반환했다.

 

 

 

27. 특정 문자 제거하기

문제

class Solution {
    public String solution(String my_string, String letter) {
        String answer = "";
        
        for(int i=0; i<my_string.length(); i++){
            if(my_string.charAt(i) != letter.charAt(0)){
                answer += my_string.charAt(i);
            }
        }
        
        
        return answer;
    }
}

<작성한 코드>

my_string의 길이만큼 반복해주도록 for문을 만들어준 뒤, my_string의 첫 번째 값과 letter의 문자가 일치하지 않을 때만 answer안에 my_string의 i번째 값을 넣어주었다.

 

 

 

28. 각도기

문제

class Solution {
    public int solution(int angle) {
        int answer = 0;
        
        if(angle < 90) answer = 1;
        else if(angle == 90) answer = 2;
        else if(angle < 180) answer = 3;
        else if(angle == 180) answer = 4;
        else answer = 0;
        
        return answer;
    }
}

<작성한 코드>

if-else 를 사용해서 조건에 맞도록 answer값을 반환하였다.

 

 

 

29. 양꼬치

문제

class Solution {
    public int solution(int n, int k) {
        int answer = 0;
        int service = (int) n/10;
        
        answer = 12000*n + 2000*(k-service);
        
        return answer;
    }
}

<작성한 코드>

서비스 음료수 개수를 미리 n/10으로 구해주었다. 그 후 양꼬치값*n + 음료수값*(k-서비스음료수)를 해주고 반환하였다.

 

 

 

30. 짝수의 합

문제

class Solution {
    public int solution(int n) {
        int answer = 0;
        
        for(int i=1; i<=n; i++){
            if(i % 2 == 0) answer+=i;
        }
        
        return answer;
    }
}

<작성한 코드>

for문으로 n번을 돌리고 그중 짝수일때만 값을 더해서 반환하였다.

 

 

 

31. 배열 자르기

문제

class Solution {
    public int[] solution(int[] numbers, int num1, int num2) {
        int[] answer = new int[num2 - num1 + 1];
        
        for(int i=0; num1<=num2; num1++, i++){
            answer[i] = numbers[num1];
        }
        
        return answer;
    }
}

<작성한 코드>

answer배열의 길이는 num2-num1을 해준 뒤 +1을 해주어 개수를 맞춰주었다. 그 후 for문으로 num1부터 num2만큼 배열을 반복해 주었고 num1, i를 1씩 증가시켜 가며 answer [i]에 numbers [num1]에 있는 값을 대입해 주었다.

 

 

 

32. 외계행성의 나이

문제

class Solution {
    public String solution(int age) {
        String answer = "";
        
        while(age > 0){
            int a = age%10;
            char ch = (char)('a' + a);
            answer = ch + answer;
            age /=10;
        }
        
        return answer;
    }
}

<작성한 코드>

age가 0보다 크면 while이 실행되게 했다. 우선 age를 10으로 나눠서 나머지를 가져온 뒤 일의 자릿수부터 구했다. 변수 ch에 'a' + a를 해줘서 숫자에 맞는 알파벳을 대입했다. 그 후 배열 answer에 ch + answer을 해줘서 자릿수에 맞도록 설정해준 뒤 age/10을 해줘서 다음 자릿수로 이동해 주었다. 

반응형
프로필사진

남건욱's 공부기록