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
'코딩테스트(Level 2)' 카테고리의 다른 글
[JAVA, Programmers] 카펫 만들기(자바) (0) | 2022.12.15 |
---|---|
[JAVA, Programmers] 숫자의 표현(자바) (0) | 2022.12.04 |
[JAVA, Programmers] 숫자의 표현(자바) (0) | 2022.12.04 |
[JAVA, Programmers] 최솟값 만들기(자바) (0) | 2022.12.04 |
[JAVA, Programmers] 피보나치 수(자바) (0) | 2022.11.28 |