JAVAIARY

프로그래머스 ) 최댓값과 최솟값 본문

examplePractice

프로그래머스 ) 최댓값과 최솟값

shiherlis 2023. 2. 18. 13:40

문제: https://school.programmers.co.kr/learn/courses/30/lessons/12939

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

static String solution(String s) {
	    String answer = "";
	    String[] nums = s.split("\\s");
	    
	    //int로 변환해 arrayList 에 담음
	    ArrayList<Integer> intarr = new ArrayList<Integer>();
	    for(String num: nums ) {
	    	intarr.add(Integer.parseInt(num));
	    }
	    
	    //최댓값, 최솟값 구하기
	    int max = Integer.MIN_VALUE;
	    int min = Integer.MAX_VALUE;
	    //1. 최댓값 최솟값 비교로 풀기
	    for(int intnum : intarr) {
	    	if (intnum > max) {
					max = intnum;
				}
	    	if (intnum < min) {
	    		min = intnum;
	    	}
	    }
	    //2. 정렬로 풀기
	    Integer[] arr = intarr.toArray(new Integer[intarr.size()]);
	    for(int i = 0; i < intarr.size(); i++) {
	    	for(int j = i+1; j < intarr.size(); j++) {
	    		// arr[i] 값이 arr[i+1]의 값보다 크면 [i]와 [i+1]값 스왑
	    		if (arr[i] > arr[j]) {
	    			int temp = arr[i];
	    			arr[i] = arr[j];
	    			arr[j] = temp;	
					}
	    	}
	    }
	    min= arr[0];
	    max = arr[arr.length-1];
	    
	    
	    answer = min +" "+max;
	    return answer;
	}
  1. 처음 생각한대로 최댓값 최솟값을 각각 구하기
  2. 버블정렬을 이용하여 풀기

두 가지 방법으로 풀어봤는데 버블정렬이 정확하기는 하지만 확실히 처리 시간이 오래 걸린다.