문제 설명
외과의사 머쓱이는 응급실에 온 환자의 응급도를 기준으로 진료 순서를 정하려고 합니다. 정수 배열 emergency가 매개변수로 주어질 때 응급도가 높은 순서대로 진료 순서를 정한 배열을 return하도록 solution 함수를 완성해주세요.
제한사항
* 중복된 원소는 없습니다.
* 1 ≤ emergency의 길이 ≤ 10
* 1 ≤ emergency의 원소 ≤ 100
입출력 예
[emergency ] [ result ]
[3, 76, 24] [3, 1, 2]
[1, 2, 3, 4, 5, 6, 7] [7, 6, 5, 4, 3, 2, 1]
[30, 10, 23, 6, 100] [2, 4, 3, 5, 1]
입출력 예 설명
입출력 예 #1
emergency가 [3, 76, 24]이므로 응급도의 크기 순서대로 번호를 매긴 [3, 1, 2]를 return합니다.
입출력 예 #2
emergency가 [1, 2, 3, 4, 5, 6, 7]이므로 응급도의 크기 순서대로 번호를 매긴 [7, 6, 5, 4, 3, 2, 1]를 return합니다.
입출력 예 #3
emergency가 [30, 10, 23, 6, 100]이므로 응급도의 크기 순서대로 번호를 매긴 [2, 4, 3, 5, 1]를 return합니다.
[내 소스코드]
배열 이름이 너무 길어서 a로 바꿨고, 동적 할당은 calloc을 사용했다.
#include <stdio.h>
int* solution(int a[], size_t a_len) {
int* answer = (int*)calloc(1,sizeof(int)*100);
int max=0,k=0;
int count=1;
for(int i=0;i<a_len;i++){
for(int j=0;j<a_len;j++) {
if(max<a[j]){
max=a[j];
answer[j]=count;
k=j;
}}
max=0;
count++;
a[k]=0; }
return answer;
}
멍청하게 배열++ 즉 answer[i]++ 를 몰라서 혼자 맘대로 풀었다. 제일 큰 값을 구해 answer배열에 1을 넣고
그 배열을 0으로 만든다음 그 다음으로 큰 값을 구해 2를 넣고.. 이런 식으로 풀었는데 위의 내용만 알았다면 금방 풀 문제였던 것이다..
수정한 [소스코드]
#include <stdio.h>
int* solution(int a, size_t a_len) {
int* answer = (int*)calloc(1,sizeof(int)*100);
for(int i=0;i<a_len;i++){
answer[i] = 1;
for(int j=0;j<a_len;j++){
if(a[i]<a[j])
answer[i]++;
} }
return answer;
}
'c언어' 카테고리의 다른 글
[C언어/프로그래머스 레벨1]-삼총사 (0) | 2022.11.10 |
---|---|
[C언어/프로그래머스 레벨0]-가위 바위 보 (0) | 2022.10.30 |
[C/프로그래머스 레벨0]-숨어있는 숫자의 덧셈(1) (0) | 2022.10.29 |
[프로그래머스 레벨0]-모음 제거 C언어 (0) | 2022.10.29 |