Algorithm

[Algorithm/Java] 알고리즘 자바 장난꾸러기 (코딩테스트, Sorting, Searching, 정렬, 검색, 바뀐 순서 찾기)

권락현 2022. 4. 26. 00:34


1. 문제 설명

  • 설명
    새 학기가 시작되었습니다. 철수는 새 짝꿍을 만나 너무 신이 났습니다.
    철수네 반에는 N명의 학생들이 있습니다.
    선생님은 반 학생들에게 반 번호를 정해 주기 위해 운동장에 반 학생들을 키가 가장 작은 학생부터 일렬로 키순으로 세웠습니다.
    제일 앞에 가장 작은 학생부터 반 번호를 1번부터 N번까지 부여합니다. 철수는 짝꿍보다 키가 큽니다.
    그런데 철수가 앞 번호를 받고 싶어 짝꿍과 자리를 바꿨습니다.
    선생님은 이 사실을 모르고 학생들에게 서있는 순서대로 번호를 부여했습니다.
    철수와 짝꿍이 자리를 바꾼 반 학생들의 일렬로 서있는 키 정보가 주어질 때 철수가 받은 번호와 철수 짝꿍이 받은 번호를
    차례로 출력하는 프로그램을 작성하세요.
  • 입력
    첫 번째 줄에 자연수 N(5<=N<=100)이 주어진다.
    두 번째 줄에 제일 앞에부터 일렬로 서있는 학생들의 키가 주어진다.
    키(높이) 값 H는 (120<=H<=180)의 자연수입니다.
  • 출력
    첫 번째 줄에 철수의 반 번호와 짝꿍의 반 번호를 차례로 출력합니다.
 

 

2. 문제 코드 및 풀이 설명

import java.util.Arrays;
import java.util.Scanner;

public class Monkey {
  public static void main(String[] args) {
    Monkey T = new Monkey();
    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();
    System.out.println(T.solution(n, arr));
  }

  // 해결방법
  // 배열을 하나 복사한다
  // 복사한 배열을 정렬하여 원래의 순서를 맞춰준다
  // 두 배열을 비교하여 서로 다른 값을 찾아 리턴해준다
  public String solution(int n, int[] arr) {
    String answer = "";

    int[] tmp = arr.clone(); // 배열 복사
    Arrays.sort(tmp); // 복사한 배열 정렬

    for (int i = 0; i < n; i++) {
      // 정렬된 순서와 다른 값을 문자열에 추가
      if (tmp[i] != arr[i]) answer += (i + 1) + " ";
    }
    return answer;
  }
}

 

3. 출력 예시

입력
9
120 125 152 130 135 135 143 127 160

출력
3 8

 

 


위의 내용은 인프런에서 수강할 수 있는 김태원님의 자바 알고리즘 문제풀이 강의를 바탕으로 공부한 내용을 정리한 내용입니다!

https://inf.run/iAi6

 

자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비 - 인프런 | 강의

자바(Java)로 코딩테스트를 준비하시는 분을 위한 강좌입니다. 코딩테스트에서 가장 많이 출제되는 Top 10 Topic을 다루고 있습니다. 주제와 연동하여 기초문제부터 중급문제까지 단계적으로 구성

www.inflearn.com