코딩테스트 회고록/코테_Java

[JAVA] 프로그래머스 - 진료순서 정하기

2023. 3. 4. 01:17
목차
  1. ❓ 문제 설명
  2. ⚠️ 제한사항 및 입출력 예시
  3. 🔍 알고리즘 구상
  4. ✏️ 직접 구현한 코드
  5. 🗣️ 코드 설명
  6. ⭐ 새로 알게된 점

프로그래머스 코딩테스트 연습 입문단계 '진료순서 정하기' 문제입니다.

https://school.programmers.co.kr/learn/courses/30/lessons/120835

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


❓ 문제 설명

외과의사 머쓱이는 응급실에 온 환자의 응급도를 기준으로 진료 순서를 정하려고 합니다. 정수 배열 emergency가 매개변수로 주어질 때 응급도가 높은 순서대로 진료 순서를 정한 배열을 return하도록 solution 함수를 완성해주세요.

 

※ 아래 입출력 예시를 참고하세요!


⚠️ 제한사항 및 입출력 예시

  • 중복된 원소는 없습니다.
  • 1 ≤ emergency의 길이 ≤ 10
  • 1 ≤ emergency의 원소 ≤ 100

입출력 예시 ▼

 

입력 (emergency)

[30, 10, 23, 6, 100]

출력 (return값)

[2, 4, 3, 5, 1]
// emergency가 [30, 10, 23, 6, 100]이므로 응급도의 크기 순서대로 번호를 매긴 [2, 4, 3, 5, 1]를 return합니다.

🔍 알고리즘 구상

이 문제를 보자마자 인덱스를 활용해서 풀어야겠다는 생각을 했습니다.

응급도가 클 수록 진료 순서는 빨라야(순서의 숫자는 작아야)합니다. 따라서 내림차순을 이용했습니다.

1. 먼저 응급도를 내림차순 정렬한 배열 만들기
ex) [100, 30, 23, 10, 6]

2. 기존 배열과 내림차순 배열을 비교
ex) [30, 10, 23, 6, 100] VS [100, 30, 23, 10, 6]

3. 비교해서 같을 때 결과 배열에 (내림차순 배열의 인덱스 +1) 값을 넣기
ex) [2, 4, 3, 5, 1]

✏️ 직접 구현한 코드

import java.util.Arrays;

class Solution {
    public int[] solution(int[] emergency) {
        int[] sort_em = Arrays.copyOf(emergency,emergency.length);
        int[] answer = new int[emergency.length];
        int tmp;
        for(int i = 0; i < sort_em.length-1; i++) {
            for(int j = i+1; j < sort_em.length; j++) {
                if(sort_em[i] < sort_em[j]) {
                    tmp = sort_em[j];
                    sort_em[j] = sort_em[i];
                    sort_em[i] = tmp;
                }
            }
        }
        for(int i = 0; i < answer.length; i++ ) {
            for(int j = 0; j < answer.length; j++ ) {
                if(emergency[i] == sort_em[j]) {
                    answer[i] = j+1;
                }
            }
        }
        return answer;
    }
}

🗣️ 코드 설명

  • Arrays 클래스의 copyOf 메서드를 이용해 sort_em배열과 answer배열 각각에 매개 변수 emergency를 복사했습니다.
  • for문을 이용해서 sort_em 배열을 내림차순 정렬했습니다.
  • 또 for문을 이용해서 기존 배열과 내림차순한 배열을 비교했습니다. 그 안에서 emergency[i] 와 sort_em[j]와 같을 때 내림차순한 배열의 인덱스를 나타내는 j에 1을 더한 값을 answer배열에 넣었습니다.

⭐ 새로 알게된 점

  • copyOf()  : 배열을 복사할 때 사용 (Arrays 클래스의 메서드)

사용 예

int[] num = {1,2,3};
int[] arr = Arrays.copyOf(num,num.length); // (복사할 배열, 새로 만들 배열의 길이)

// arr = [1,2,3]

 

'코딩테스트 회고록 > 코테_Java' 카테고리의 다른 글

[JAVA] 학교 수행평가 코딩테스트 - 문자열을 입력 받아 거꾸로 출력하기  (0) 2023.03.06
[JAVA] 학교 수행평가 코딩테스트 - 정수 5개를 배열에 저장하고 평균 출력하기  (0) 2023.03.04
[JAVA] 프로그래머스 - 문자열 정렬하기 (1)  (2) 2023.03.02
[JAVA] 학교 수행평가 코딩테스트 - 3년 간의 1, 2학기 성적 입력받고 전체 평균 점수 구하기  (0) 2023.03.02
[JAVA] 학교 수행평가 코딩테스트 - 정수 10개를 배열에 저장 후 가장 큰 수 출력  (0) 2023.02.28
  1. ❓ 문제 설명
  2. ⚠️ 제한사항 및 입출력 예시
  3. 🔍 알고리즘 구상
  4. ✏️ 직접 구현한 코드
  5. 🗣️ 코드 설명
  6. ⭐ 새로 알게된 점
'코딩테스트 회고록/코테_Java' 카테고리의 다른 글
  • [JAVA] 학교 수행평가 코딩테스트 - 문자열을 입력 받아 거꾸로 출력하기
  • [JAVA] 학교 수행평가 코딩테스트 - 정수 5개를 배열에 저장하고 평균 출력하기
  • [JAVA] 프로그래머스 - 문자열 정렬하기 (1)
  • [JAVA] 학교 수행평가 코딩테스트 - 3년 간의 1, 2학기 성적 입력받고 전체 평균 점수 구하기
iamjisu
iamjisu
글 솜씨는 없지만 한 글자 한 글자 정성을 다해, 새롭게 배운 것을 정리하고 공부하는 코딩 성장 일기!!
iamjisu
지수의 코딩 발자국
iamjisu
전체
오늘
어제
github 링크
  • 카테고리
    • 개념정리
      • CS
      • MySQL
      • JavaScript
      • Kotlin
      • Java
      • NodeJS
      • Android
    • 코딩테스트 회고록
      • 코테_Java
      • 코테_C언어
    • 오류해결

최근 글

최근 댓글

hELLO · Designed By 정상우.
iamjisu
[JAVA] 프로그래머스 - 진료순서 정하기
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.