백준 알고리즘 1015번 수열 정렬 문제입니다.
(참고 - https://www.acmicpc.net/problem/1015 )
코드 )
#include <stdio.h>
int main() {
int i, j, testcase;
int arr[50];
int tmp[50] = {0, };
scanf("%d", &testcase);
for (i = 0; i<testcase; i++) {
scanf("%d", &arr[i]);
for (j = 0; j<i; j++) {
if (arr[j] > arr[i]) {
tmp[j]++;
}
else if (arr[j] <= arr[i]) {
tmp[i]++;
}
}
}
for (i = 0; i<testcase; i++) {
printf("%d ", tmp[i]);
}
return 0;
}
- 문제는 복잡해보이지만, 간단하게 생각해볼 수 있습니다.
앞으론 testcase에 대한 설명은 생략하도록 하겠습니다.
먼저 배열 arr를 선언해준 뒤, 값을 입력받아 저장합니다.
이후 if문을 이용하여 arr의 값을 비교 해 줄 때,
0으로 초기화 시켜 준 tmp라는 배열을 하나 생성해주어
해당 i번째 수행 시에 tmp의 값을 1씩 증가시켜주는 로직을 이용하여 구현하였습니다.
이중 for문에서 안의 for문에서는 j=0부터 j<i까지,
즉 i번만큼 해당 i번째 수행 시 입력받은 arr[i]의 값과,
이미 저장되어있는 arr[j] (이때, j는 0~i-1까지)의 값을 비교하여
tmp의 값을 변하게 합니다.
+java)
public class algo1015 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int loop = sc.nextInt();
int[] arr = new int[50];
int[] rst = new int[50];
for(int i=0; i<loop; i++) {
arr[i] = sc.nextInt();
for(int j=0; j<i; j++) {
if(arr[j] > arr[i])
rst[j]++;
else
rst[i]++;
}
}
for(int i=0; i<loop; i++) {
System.out.println(rst[i]);
}
}
}
'Programming > Algorithm' 카테고리의 다른 글
백준 알고리즘 - 1037번 : 약수 (1) | 2016.04.18 |
---|---|
백준 알고리즘 - 1026번 : 보물 (0) | 2016.04.18 |
백준 알고리즘 - 1009번 : 분산처리 (1) | 2016.04.18 |
백준 알고리즘 - 1008번 : A/B (0) | 2016.04.18 |
백준 알고리즘 - 1003번 : 피보나치 함수 (2) | 2016.04.18 |
WRITTEN BY