[문제풀이] 06-06. 장난꾸러기

𝒄𝒉𝒂𝒏𝒎𝒊𝒏·2023년 11월 5일
0

인프런, 자바(Java) 알고리즘 문제풀이

Sorting and Searching - 0606. 장난꾸러기


🗒️ 문제


🎈 나의 풀이

	private static String solution(int[] arr) {
        int c = 0, p = 0;

        for(int i=arr.length-1; i>1; i--) {
            if(arr[i] < arr[i - 1]) {
                p = i + 1;
                break;
            }
        }

        for(int i=0; i<p; i++ ) {
            if(arr[i] > arr[p-1]) {
                c = i + 1;
                break;
            }
        }

        return c + " " + p;
    }
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int[] arr = new int[n];

        for (int i = 0; i < n; i++) arr[i] = sc.nextInt();

        System.out.println(solution(arr));
    }


🖍️ 강의 풀이

  public ArrayList<Integer> solution(int n, int[] arr){
		ArrayList<Integer> answer=new ArrayList<>();
		int[] tmp=arr.clone();
		Arrays.sort(tmp);
		for(int i=0; i<n; i++){
			if(arr[i]!=tmp[i]) answer.add(i+1);
		}
		return answer;
	}
	public static void main(String[] args){
		Main T = new Main();
		Scanner kb = new Scanner(System.in);
		int n=kb.nextInt();
		int[] arr=new int[n];
		for(int i=0; i<n; i++) arr[i]=kb.nextInt();
		for(int x : T.solution(n, arr)) System.out.print(x+" ");
	}


💬 짚어가기

해당 문제는 단순 비교를 통해 풀 수 있다. 나의 풀이의 경우 학생들의 키가 담긴 배열을 순회하며
짝궁을 먼저 찾고, 다음 철수를 찾도록 구성하였다.

✔️ 짝궁과 철수 찾기 조건

  • 짝궁 찾기 : 배열을 순회하며 앞 친구보다 키가 작은 경우 해당 Index + 1
  • 철수 찾기 : 배열을 순회하며 짝궁의 키보다 큰 경우 해당 Index + 1

강의에서는 입력된 배열을 clone()하여 깊은 복사를 하고, Arrays.sort() 메소드를 이용해
정렬한다. 다음 입력된 배열과, 정렬된 배열을 비교하며 배열의 요소 값이 달라지는 경우를 찾는다.

profile
𝑶𝒏𝒆 𝒅𝒂𝒚 𝒐𝒓 𝒅𝒂𝒚 𝒐𝒏𝒆.

0개의 댓글