[프로그래머스 LV.0] - JAVA[5]

hybiis·2023년 1월 30일
0

프로그래머스 - JAVA

목록 보기
6/19


📖 Q1. 최댓값 만들기

정수 n과 정수 배열 numlist가 매개변수로 주어질 때, numlist에서 n의 배수가 아닌 수들을 제거한 배열을 return하도록 solution 함수를 완성해주세요.

✍ A1.

import java.util.*;
class Solution {
    public int solution(int[] numbers) {
        int answer=0;
        Arrays.sort(numbers); //오름차순으로 정렬
        answer=Math.max(numbers[0]*numbers[1],numbers[numbers.length-1]*numbers[numbers.length-2]);
        //Math.max를 이용하여 양수에서의 곱셈과 음수에서 곱셈 값을 비교
        return answer;
    }
}

📖 Q2. 인덱스 바꾸기

문자열 my_string과 정수 num1, num2가 매개변수로 주어질 때, my_string에서 인덱스 num1과 인덱스 num2에 해당하는 문자를 바꾼 문자열을 return 하도록 solution 함수를 완성해보세요.

✍ A2.

class Solution {
    public String solution(String my_string, int num1, int num2) {        
        char[] answer = my_string.toCharArray();
        answer[num2] = my_string.charAt(num1);
        answer[num1] = my_string.charAt(num2);
        
        return String.valueOf(answer);
        //.valueOf()을 이용하여 answer 객체를 string으로 형변환
    }
}

✍ A2-1.

class Solution {
    public String solution(String my_string, int num1, int num2) {
        String [] answer = my_string.split("");
        String temp=answer[num1];
        answer[num1]=answer[num2];
        answer[num2]=temp;
        return String.join("",answer);
    }
}

📖 Q3. 외계행성의 나이

우주여행을 하던 머쓱이는 엔진 고장으로 PROGRAMMERS-962 행성에 불시착하게 됐습니다. 입국심사에서 나이를 말해야 하는데, PROGRAMMERS-962 행성에서는 나이를 알파벳으로 말하고 있습니다. a는 0, b는 1, c는 2, ..., j는 9입니다. 예를 들어 23살은 cd, 51살은 fb로 표현합니다. 나이 age가 매개변수로 주어질 때 PROGRAMMER-962식 나이를 return하도록 solution 함수를 완성해주세요.

✍ A3.

class Solution {
    public String solution(int age) {
        String answer = "";
        String a = Integer.toString(age);//int->String으로 변환
        for(int i=0;i<a.length();i++){
            answer+=(char)(a.charAt(i)+49); //아스키코드 이용
        }
        return answer;
    }
}

📖 Q4. 약수 구하기

정수 n이 매개변수로 주어질 때, n의 약수를 오름차순으로 담은 배열을 return하도록 solution 함수를 완성해주세요.

✍ A4.

class Solution {
    public int[] solution(int n) {
        int count=0;
        int j=0;
        
        for(int i=1;i<=n;i++){
            if(n%i==0){
                count++;
            }
        }   
        
        int[] answer = new int[count];
        
        for( int i=1;i<=n;i++){
            if(n%i==0){
                answer[j]=i;
                j++;
            }
        }
        return answer;
    }
}

📖 Q5. 369 게임

머쓱이는 친구들과 369게임을 하고 있습니다. 369게임은 1부터 숫자를 하나씩 대며 3, 6, 9가 들어가는 숫자는 숫자 대신 3, 6, 9의 개수만큼 박수를 치는 게임입니다. 머쓱이가 말해야하는 숫자 order가 매개변수로 주어질 때, 머쓱이가 쳐야할 박수 횟수를 return 하도록 solution 함수를 완성해보세요.

✍ A5.

class Solution {
    public int solution(int order) {
        int answer = 0;
        String temp=Integer.toString(order);
        
        for(int i=0;i<temp.length();i++){
            if(temp.charAt(i)=='3'||temp.charAt(i)=='6'||temp.charAt(i)=='9'){
                answer++;
            }           
        }
        return answer;
    }
}

📖 Q6. 숫자찾기

정수 num과 k가 매개변수로 주어질 때, num을 이루는 숫자 중에 k가 있으면 num의 그 숫자가 있는 자리 수를 return하고 없으면 -1을 return 하도록 solution 함수를 완성해보세요.

✍ A6.

class Solution {
    public int solution(int num, int k) {
        String numStr = String.valueOf(num);
        String kStr = String.valueOf(k); //int -> String으로 변환

        int answer = numStr.indexOf(kStr); //indexOf를 이용하여 매개변수 k값이 있는지 판단 있으면 인덱스 값을 반환하고 없다면 -1로 반환
        return answer < 0 ? -1 : answer + 1 ;
    }
}

📖 Q7. 합성수 찾기

약수의 개수가 세 개 이상인 수를 합성수라고 합니다. 자연수 n이 매개변수로 주어질 때 n이하의 합성수의 개수를 return하도록 solution 함수를 완성해주세요.

✍ A7.

 class Solution {
    public int solution(int n) {
        int answer = 0;
         
        for(int i=1;i<=n;i++){
            int count=0; //1씩 증가할 때마다 초기화 해주기
            for(int j=1;j<=i;j++){
                if(i%j==0){
                    count++;                    
                }                
            }
            if(count>=3){
                answer++;
            }            
        }
        return answer;
        
    }
}

📖 Q8. 중복된 문자 제거하기

문자열 my_string이 매개변수로 주어집니다. my_string에서 중복된 문자를 제거하고 하나의 문자만 남긴 문자열을 return하도록 solution 함수를 완성해주세요.

✍ A8.

import java.util.*;
import java.util.stream.Collectors;

class Solution {
    public String solution(String my_string) {
         return Arrays.stream(my_string.split("")).distinct().collect(Collectors.joining());
   //.distinct()를 이용하여 중복된 문자 제거
   }
}

📖 Q9. A로 B만들기

문자열 before와 after가 매개변수로 주어질 때, before의 순서를 바꾸어 after를 만들 수 있으면 1을, 만들 수 없으면 0을 return 하도록 solution 함수를 완성해보세요.

✍ A9.

import java.util.*;
class Solution {
    public int solution(String before, String after) {
         int answer = 0;
         char[] a=after.toCharArray();
         char[] b=before.toCharArray();
        
         Arrays.sort(a);
         Arrays.sort(b);
         after =new String(a);
         before =new String(b);//sort를 이용하여 A,B 둘다 정렬
        
         if(after.equals(before)){ //문자열이므로 .equals()를 이용하여 비교
                return 1; //같다면 1을 반환
            }
            else{
                return 0;
          }
    }     
}

📖 Q10. 팩토리얼

i팩토리얼 (i!)은 1부터 i까지 정수의 곱을 의미합니다. 예를들어 5! = 5 4 3 2 1 = 120 입니다. 정수 n이 주어질 때 다음 조건을 만족하는 가장 큰 정수 i를 return 하도록 solution 함수를 완성해주세요.
i! ≤ n

✍ A10.

class Solution {
    public int solution(int n) {
        int max = 0;
        int a=1;
        
        for(int i=1;i<=n;i++){
            a*=i; //팩토리얼 계산
            if(a==n){ //팩토리얼 값이 n이랑 같을 시
                max=i; //max값은 i
                break; 
            }
            else if(a>n){ //팩토리얼 값이 n보다 클 시
                max=i-1; //max값은 i-1
                break;
            }
        }
        return max;
    }
}
 
profile
초보 개발자

0개의 댓글