프로그래머스 Lv.0 가장 큰 수 찾기개발자가 되기까지 (2023.08.16~2024.04.15)/[Algorithm] Programmers ver.Java2024. 1. 10. 12:10
Table of Contents
<1st Try>
class Solution {
public int[] solution(int[] array) {
int[] answer = new int [2];
for(int i = 0; i < array.length; i++) {
for(int j = i+1; j <array.length; j++) {
if(array[i] > array[j]) {
answer[0] = array[i];
answer[1] = i;
}
}
}
return answer;
}
}
예제 테스트는 모두 통과했는데 채점에서 test2만 통과에 실패했다.
제한사항을 다시 읽어보니 array 길이가 최소 1이라고 되어있어서
array.length가 1일 때의 조건을 추가해 보았다.
<2nd Try>
class Solution {
public int[] solution(int[] array) {
int[] answer = new int [2];
if(array.length == 1) {
answer[0] = array[0];
answer[1] = 0;
} else {
for(int i = 0; i < array.length; i++) {
for(int j = i+1; j < array.length; j++) {
if(array[i] > array[j]) {
answer[0] = array[i];
answer[1] = i;
}
}
}
}
return answer;
}
}
하지만 또 다시 채점에서 test2 통과에 실패했다.
도대체 뭐가 문제인지 몰라서 answer에 {0, 0} 값을 먼저 넣어두고 answer[0]와 array 비교를 진행해보았다.
<Solution1>
class Solution {
public int[] solution(int[] array) {
int[] answer = {0, 0};
for(int i = 0; i < array.length; i++) {
if(answer[0] < array[i]) {
answer[0] = array[i];
answer[1] = i;
}
}
return answer;
}
}
answer와 비교를 진행했을 때 test2가 통과 되었다.
그래서 처음에 풀려고 했던 방식으로 다시 재도전하되, array 배열의 원소끼리 비교가 아닌
array와 answer[0]을 비교해주는 코드로 테스트를 진행해 보았다.
<Solution2>
class Solution {
public int[] solution(int[] array) {
int[] answer = new int [2];
for(int i = 0; i < array.length; i++) {
if(array[i] > answer[0]) {
answer[0] = array[i];
answer[1] = i;
}
}
return answer;
}
}
int[] answer = new int [2]로 배열을 생성하면 배열에 아무 값도 없는 상태니까
if (array[i] > answer[0])이 되지 않을 거라고 생각했던 것이 문제였다.
728x90
@rlozlr :: 얼렁뚱땅 개발자
얼렁뚱땅 주니어 개발자
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!