우당탕탕 개발일지
[프로그래머스] 데이터 분석(Java, Level.1) 본문
문제
data : 정렬한 데이터들이 담긴 이차원 정수 리스트
data[i] : 코드 번호(code), 제조일(date), 최대 수량(maximum), 현재 수량(remain)
data[i][1] : 제조일은 yyyyMMdd로 표현함.
ext : 어떤 정보를 기준으로 데이터를 뽑아낼지를 의미하는 문자열
val_ext : 뽑아낼 정보의 기준값을 나타내는 정수
ort_by : 정보를 정렬할 기준이 되는 문자열
data에서 ext 값이 val_ext보다 작은 데이터만 뽑은 후,
sort_by에 해당하는 값을 기준으로 오름차순으로 정렬하여
return 하도록 solution 함수를 완성해 주세요.
입출력 예
처음 내 코드...!
풀긴했으나.... 사실 넘 허접함 ㅎ ㅋㅋㅋ
그래도 혼자 힘으로 풀어보고 싶어서 일단 해봄!
고민 1. HashMap 사용해서 Key값을 가지고 인덱스 번호를 가지고 올까?
고민 2. Arrays.sort(array, (o1, o2) -> o1[변수] - o2[변수]) 이 부분에서 변수 대입하면 오류발생... 왜.... ㅠㅠㅠ
>> 이래서 고민 1를 그냥 swith case로 변경... ㅎ
고민 3. 배열 크기 변경은 어캄......
>> 배열 다시 잡는걸로 해결함
이러한 고민들로 탄생한 코드!
int[][] answer = new int[data.length][data[0].length];
int indexExt = 0;
int count = 0;
switch (ext) {
case "code":
indexExt = 0;
break;
case "date":
indexExt = 1;
break;
case "maximum":
indexExt = 2;
break;
case "remain":
indexExt = 3;
break;
}
for (int i = 0; i < data.length; i++) {
if (data[i][indexExt] < val_ext) {
answer[count] = data[i];
count++;
}
}
answer = Arrays.copyOf(answer, count);
// 정렬
switch (sort_by) {
case "code":
Arrays.sort(answer, (o1, o2) -> o1[0] - o2[0]);
break;
case "date":
Arrays.sort(answer, (o1, o2) -> o1[1] - o2[1]);
break;
case "maximum":
Arrays.sort(answer, (o1, o2) -> o1[2] - o2[2]);
break;
case "remain":
Arrays.sort(answer, (o1, o2) -> o1[3] - o2[3]);
break;
}
return answer;
하지만 위의 코드가 넘 허접한게 넘 느껴짐... (통과는 했지만...ㅋㅋㅋ)
그래서 다른 사람 풀이 참고했더니 sort부분에 변수 값을 final로 지정하면 된다...!
(이거때매 쓸데없이 switch case로 했는데..ㅋㅋㅋ )
상수가 들어가야 해서 final로 지정하면 되는거였다.....
사실 너무 당연한 생각인데 왜 이걸 생각을 못했는지... ㅠㅠ
최종 코드의 풀이
1. 변수 설명
answer : 반환값
valueList : 주어진 문구 4개를 List 형태로 저장
ArrayList : 조건에 알맞는 원소 저장
sortIndex : 정렬해야 하는 Index 번호을 상수로 저
2. val_ext
주어진 상수 val_ext 보다 작은 원소만 resultList에 저장
3. 정렬
resultList을 배열 answer에 저장
answer 오름차순 정렬
>> 이때 sortIndex을 final 변수로 설정하여 상수로 사용할 수 있도록 해야 오류 발생하지 않음..!!!
코드
프로그래머스 문제
https://school.programmers.co.kr/learn/courses/30/lessons/250121
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
'코테 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 성격 유형 검사하기 (Java, Level.1) (0) | 2024.07.10 |
---|---|
[프로그래머스] 개인정보 수입 유효기간 (Java, Level.1) (0) | 2024.07.09 |
[프로그래머스] 공원 산책 (Java, Level.1) (1) | 2024.07.08 |
[프로그래머스] 신고 결과 받기(Java, Level.1) (0) | 2024.07.08 |
[프로그래머스] 가장 많이 받은 선물(Java, Level.1) (0) | 2024.07.05 |