코딩테스트(Level 2)

[JAVA, Programmers] 최댓값과 최솟값(자바)

justdoIT0730 2022. 11. 25. 19:29
728x90
728x90

1. 문제 설명

문자열 s에는 공백으로 구분된 숫자들이 저장되어 있습니다. str 나타나는 숫자  최솟값과 최댓값을찾아 이를"(최솟값)문자열을 반환하는 함수, solution 완성하세요.
예를 들어 s
 "1 2 3 4"라면 "1 4" 리턴하고, "-1 -2 -3 -4"라면 "-4 -1" 리턴하면 됩니다.

 

2. 제한 조건

s에는  이상의 정수가 공백으로 구분되어 있습니다.

 

3. 입출력 

s return
"1 2 3 4" "1 4"
"-1 -2 -3 -4" "-4 -1"
"-1 -1" "-1 -1"

 

4. 풀이(오답)

class Solution {
    public String solution(String s) {
		String[] a = s.split(" ");
		
		int max = -1;
		int min = 1;
		for (int i = 0; i < a.length; i++) {
			
			int F = Integer.parseInt(a[i]);
			
			max = Math.max(F, max);
			min = Math.min(F, min);
        }
        return min + " " + max;
    }
}

1.

공백 기준으로 배열 a에 저장한 뒤 음수일 경우 정수 최댓값 -1과 양수일 경우 정수 최솟값 1을 각각 max와 min에 저장한다.

 

2. 

최댓값과 최솟값을 배열 a길이만큼 반복하여 비교한다.

 

3.

오류 : 테스트 케이스 내 오류 발생 이유를 찾지 못하여,, 방식 자체를 바꿔서 다시 코딩해보기로 했다..

그냥 모든 숫자를 배열 내 저장하고 오름차순 하여 맨 앞자리, 맨 뒷자리를 가져와 보도록 하자,,

 

5. 최종 풀이

import java.util.*;
class Solution {
    public String solution(String s) {
        String [] a = s.split(" ");
	int [] b = new int [a.length];			//1
	for(int i =0; i<a.length;i++) {
		int cnt = Integer.parseInt(a[i]);
		b[i]=cnt;
	}
	Arrays.sort(b);
        return b[0] + " " + b[b.length-1];
    }
}

//1 

String 형식의 배열에서 sort를 적용 시 음수 처리에 오류가 생겼다.

ex) 

더보기

String s = "-1 -2 0 1 2"; 일 때 

String []a = s.split(" ");

Arrays.sort(a);

이후 출력 시

-1

-2

0

1

2

라고 나왔다.

오름/내림차순을 할 땐 꼭 문자형이 아닌 숫자형으로 해야 오류가 없다는 것을 배웠다.

 

728x90
728x90