[문제]

농부 존의 N마리의 소들이 있다.

소들은 헤어스타일에 예민하기 때문에, 다른 소들의 헤어 스타일을 보고 싶어한다.

i번째 소들의 키가 hi이고, 모든 소들은 일렬로 서 있고 오른쪽으로만 볼 수 있다.

i번째 소가 볼 수 있는 다른 소의 헤어 스타일은 i+1, i+2, .... 이다.

그런데 자기 보다 키가 같거나 큰 소가 있으면 그 다음에 있는 모든 소들의 헤어스타일은 보지 못한다.

예) N=6, H = { 10, 3, 7, 4, 12, 2 }인 경우

          = 
 =        = 
 =   -    = 
 =   =    =        -> 소가 보는 방향
 = - = =  =   
 = = = =  = = 
10 3 7 4 12 2

1번소는 2, 3, 4소의 머리스타일을 확인할 수 있다.

2번소는 다른 소들의 머리스타일을 확인할 수 없다.

3번소는 4번소의 머리스타일을 확인할 수 있다.

4번소는 다른 소의 머리스타일을 확인할 수 없다.

5번소는 6번소의 머리스타일을 확인할 수 있다.

6번소는 마지막이므로 다른 소의 머리스타일을 확인할 수 없다.

따라서, 머리스타일을 확인할 수 있는 총 수는 3 + 0 + 1 + 0 + 1 + 0 = 5이다.

 

[풀이]

import java.util.Scanner;
public class ID3130 {
    public static void main(String[] args) {
        //출력 변수를 생성
        //첫 문제 제출하니 1024(int)바이트 이상 결과가 있어 long으로 수정
        long result = 0;
        //값을 등록할 배열을 생성
        int[] array = {};

        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        // 0 보다 크고 80000보다 작을때 실행
        if(0 < n && n <= 80000){
            array = new int[n];
            //입력 값 만큼 데이터를 받기
            for (int i=0; i<array.length; i++) {
                array[i] = scanner.nextInt();
            }
            scanner.close();
            //마지막 값은 무조건 볼 수 없기 때문에 -1
            for (int i = 0; i < array.length-1; i++) {
                //이중 for 문으로 값을 확인
                for (int j = i+1; j < array.length; j++) {
                    if(array[i] <= array[j]){
                        break;
                    }
                    result++;
                }
            }
            System.out.println(result);
        }
    }
}
728x90

'코딩 테스트 > Java' 카테고리의 다른 글

[CodeUP] ID4833 : 쇠 막대기  (0) 2024.11.19
[CodeUP] ID4654 : 탑  (0) 2024.11.19
[CodeUP] ID 4891 : 행복  (0) 2024.11.18
개발자가 되고 싶은 곰