34번 문제   

 

 



    내가 풀이한 답   

 앞에서 풀었던 선택정렬을 바탕으로 오름차순으로 정렬을 한 다음 뒤에서 부터 순회(for)를 통해 각각의 요소를 접근하면서 동점자를 제외하고 점수가 다르면 count 변수를 증가시켜 count 변수가 3이 되는 시점의 index의 해당 요소를 출력하였다.

#include <stdio.h>
#include <stdlib.h>

int main() {
	freopen("input.txt", "rt", stdin);
	int n, i, j, temp;
	scanf("%d", &n);
	
	int *arr = (int *)malloc(sizeof(int) * n);
	
	for(i=0; i<n; i++){
		scanf("%d", &arr[i]);
	}
	
	for(i=n-1; i>0; i--){
		for(j=0; j<i; j++){
			if(arr[j] > arr[j+1]){
				temp = arr[j];
				arr[j] = arr[j+1];
				arr[j+1] = temp;
			}
		}
	}

	for(i=0; i<n; i++){
		printf("%d ", arr[i]);
	}

	free(arr);
	return 0;
}

 

 결과는 통과하였다.

 

 



    사이트의 답안   

#include<stdio.h>
int main() {
	freopen("input.txt", "rt", stdin);
	int a[101], n, tmp, idx, i, j, cnt=0;
	scanf("%d", &n);
	for(i=0; i<n; i++){
		scanf("%d", &a[i]);
	}
	for(i=0; i<n-1; i++){
		idx=i;
		for(j=i+1; j<n; j++){
			if(a[j]>a[idx]) idx=j;
		}
		tmp=a[i];
		a[i]=a[idx];
		a[idx]=tmp;
	}
	for(i=1; i<n; i++){
		if(a[i-1]!=a[i]) cnt++;
		if(cnt==2){
			printf("%d\n", a[i]);
			break;
		}
	}
	return 0;
}

 

  사이트의 답은 선택정렬을 이용해 내림차순으로 정렬한 다음 처음 숫자가 아닌 다음 숫자부터 같은 숫자가 아니면 count 변수를 증가시켜 count 변수가 2인 index의 요소를 출력하였다.

 

 

'알고리즘 & 자료구조 > 정렬' 카테고리의 다른 글

37. Least Recently Used(카카오 캐시 문제 변형)  (0) 2020.09.12
36. 삽입정렬  (0) 2020.09.11
35. Special Sort(구글 인터뷰)  (0) 2020.09.11
33. 3등의 성적은?  (0) 2020.09.11
32. 선택정렬  (0) 2020.09.11