코딩테스트 스터디
코딩테스트 연습 - 진료순서 정하기 (JAVA)
개발짱 지망생
2023. 3. 3. 17:53
프로그래머스 코딩테스트 입문 0단계 문제입니다
https://school.programmers.co.kr/learn/courses/30/lessons/120835
📢 문제 설명
외과의사 머쓱이는 응급실에 온 환자의 응급도를 기준으로 진료 순서를 정하려고 합니다. 정수 배열 emergency가 매개변수로 주어질 때 응급도가 높은 순서대로 진료 순서를 정한 배열을 return하도록 solution 함수를 완성해주세요.
⭕ 정답 코드
class Solution {
public int[] solution(int[] emergency) {
int[] answer = new int[emergency.length];
List emer_list = IntStream.of(emergency).boxed().collect(Collectors.toList()); //emergency List: 숫자 위치 알기 용도
List emer_copy_list = IntStream.of(emergency).boxed().collect(Collectors.toList()); //emergency List: 숫자 정렬 용도
Collections.sort(emer_copy_list); //오름차순 정렬 후
Collections.reverse(emer_copy_list); //내림차순으로 바꿔주기
int order = 1; //순서, 1부터 시작해서 증가될 예정
for(Object e : emer_copy_list) //정렬했던 List의 foreach: e에는 우선순위가 높은 숫자부터 들어온다
answer[emer_list.indexOf(e)] = order++; //정렬하지 않은 List를 이용해 원래 숫자의 index값을 알아내어 answer에 순서값을 넣어준다
return answer;
}
}
* <<자세한 설명은 주석을 참고하세요! IDE에 복붙해서 보시면 전혀 복잡하지 않으니 확인해보세요>>
* 숫자로 인덱스 값을 알기 위해서는 List로 변환해줘야한다. emer_list를 만들어준다
* emer_copy_list를 정렬해서 3, 24, 76으로 만든다
* 내림차순 정렬을 해야하는데 그러려면 List(emer_copy_list)로 만들어야한다
* reverse()로 내림차순 정렬을 해주면 76, 24, 3
* emer_copy_list를 하나씩 반복하면서 answer[emer_list.indexOf(아이템)] = order++;
✅ 회고
코딩테스트 스터디를 시작하기 전보다
내가 알게 되고, 활용할 수 있게 된 자바 클래스가 많이 늘어난걸 오늘 확 느꼈다.
그래서 너무 뿌 뜻 하 다!!!
이제 프로그래머스 0단계 34문제만 더 풀면 완전 정복이다
내 기준으로 머리 좀 써야하는 문제들만 남게 돼서 쪼끔 걱정되지만
난 할 수 있다~~ 이 글 보신 여러분들도 모두모두 화이팅