• 문자열 s에는 공백으로 구분된 숫자들이 저장되어 있습니다. str에 나타나는 숫자 중 소수의 최대값과 소수가 아닌 수의 최소값을 찾아 이를 "(최소값) (최대값)"형태의 문자열을 반환하는 함수, solution을 완성하세요.

    예를들어 s가 "2 3 4 5"라면 "4 5"를 리턴하고, "15 3 10 9 7 8"라면 "8 7"을 리턴하면 됩니다.

[제한사항]

  • s에는 둘 이상의 정수가 공백으로 구분되어 있습니다.
  • 문자열에는 소수가 한개 이상 섞여 있습니다.
  • 문자열에는 소수가 아닌 수가 한개 이상 섞여 있습니다.
  • 음수는 없습니다.

[입출력 예]

[지정 입력값]

 


추측) 

문자열 나열로 받은 수를 공백으로 잘라 배열을 만들고 그것을 for문을 돌려 하나하나 int로 변형한다.

이를 가지고 1과 자기자신 값을 제외한 나머지 수들로 나눠 나눠지는 숫자가 있다면 소수가 아닌 배열에, 숫자가 없다면 소수만 모인 배열에 추가하고 각각 배열을 오름차순으로 정리한다.

정리하고 나면 소수만 모인 배열에서 가장 마지막 인덱스 값(최대값)을,

소수가 아닌 수가 모인 배열에서는 가장 첫번째 인덱스 값(최소값)을,

받아 중간에 공백을 넣어 문자열로 변형해 리턴한다. 

 

소스코드) 

import java.util.ArrayList;
import java.util.Collections;

public class Main {

    public String solution(String input) {
        String answer = "";
        int numCnt = 0;
        String[] strArr = input.split(" ");

        ArrayList<Integer> primeNum = new ArrayList<>();
        ArrayList<Integer> noPrimeNum = new ArrayList<>();

        for(int i=0; i<strArr.length; i++){
            int numOne = Integer.parseInt(strArr[i]);
            for(int a=2; a<numOne; a++){ 
                if(numOne / a == 0) {
                    numCnt++;
                }
            }
            if(numCnt == 0){
                primeNum.add(numOne);
            } else {
                noPrimeNum.add(numOne);
            }
            numCnt=0;
        }

        Collections.sort(primeNum);
        Collections.sort(noPrimeNum);

        int primeMax = primeNum.get(primeNum.size()-1);
        int noPrimeMin = noPrimeNum.get(0);

        answer = noPrimeMin + " " + primeMax;

        return answer;
    }

    public static void main(String[] args) {
        Main solutionRun = new Main();
        String strInput = "97 75 88 99 95 92 73";
        System.out.println(solutionRun.solution(strInput));
    }
}

+ Recent posts