알고리즘 모의고사

SaGo_MunGcci·2022년 7월 19일
0
  • 1번. 몇시간 했더라?

상윤이는 항해에서 한 주 동안 공부 기록을 남길 알고리즘을 만들어보기로 결심했다.

항해의 체크인 페이지에는 몇가지 조건이 있는데 이를 만족하는 알고리즘을 만들어보자.

체크인과 체크아웃은 항상 정시에 진행한 것으로 가정한다.

체크아웃을 할 때 익일 시간은 24+a 로 계산한다. 즉 새벽 2시는 24+2 인 26으로 표기한다.

체크인 페이지는 체크아웃이 새벽 5시 정각이나 새벽 5시를 넘어가면 체크아웃을 깜빡한 것으로 간주한다.

따라서 새벽 5시가 넘어가 체크아웃을 하게 되면 자동으로 체크아웃을 오후 9시(21시)로 한 것으로 처리한다.

  • 제한 조건
  • 체크인(checkin)과 체크아웃(checkout)을 진행한 시간이 담긴 배열 두 개가 주어진다.
  • 각 배열에는 월요일부터 일요일까지 체크인/아웃을 한 시간이 담겨있다.
    checkin과 checkout 배열의 길이는 각각 7 이다.
					checkin					checkout		      result
- 입력출력 예 :  [9, 9, 8, 8, 7, 8, 9]  [21, 25, 30, 29, 22, 23, 30]  96
  • 답안 참고 포멧.
public class Main {
    public int solution(int[] arr1, int[] arr2) {
        int answer = 0;
        return answer;
    }

    public static void main(String[] args) {
        Main method = new Main();
        int[] arr1 = {9, 9, 9, 9, 7, 9, 8};
        int[] arr2 = {23, 23, 30, 28, 30, 23, 23};
        System.out.println(method.solution(arr1, arr2));
    }
}
  • 아 참고 답안 포멧을 보지 못하고 나는 메인메서드에서 프린트문에서 출력만했다. 포멧이 있는 줄 몰랐다. 전적으로 내실수이다.

  • 모의고사라서 다행이지 실제였으면 어떡할뻔햇을까?? 다행히 모의고사에서 실수를 해서 다행이다.

  • 앞으로 잘 보기.

  • 포멧을 적용한 내 답안.
import java.util.ArrayList;
import java.util.Arrays;

public class Qtest {


    public int solution(int[] arr1, int[] arr2) {

        //체크인 페이지는 체크아웃이 새벽 5시(""29""") 정각이나 새벽 5시를 넘어가면 체크아웃을 깜빡한 것으로 간주한다.
        //따라서 새벽 5시가 넘어가 체크아웃을 하게 되면 자동으로 체크아웃을 오후 9시(21시)로 한 것으로 처리한다.

        // 문제 출력값 확인.

//       int a [] = {9, 9, 8, 8, 7, 8, 9};
//       int b [] = {21, 25, 21, 21, 22, 23, 21};
//
//       int sum = 0;
//       for(int i = 0; i< a.length;i++){
//
//           System.out.println((b[i]-a[i]));
//           sum+= (b[i]-a[i]);
//
//       }
//
//        System.out.println(sum);


        // if문으로 checkout의 값이 25이상이면 21로 입력하기.
        // 배열의 길이는 7로 같다 --> 7일 이니까.
        // 지정 입력값
        //int check_in [] = {9, 9, 9, 9, 7, 9, 8};
        //int check_out [] = {23, 23, 30, 28, 30, 23, 23};


        int answer = 0;


        ArrayList<Integer> check_in = new ArrayList<>();
        ArrayList<Integer> check_out = new ArrayList<>();

        // checkout- checkin의 합



        for (int k = 0; k<arr1.length;k++){

            check_in.add(arr1[k]);


        }

        for (int l = 0; l<arr2.length;l++){

            check_out.add(arr2[l]);

        }

        System.out.println(check_in);
        System.out.println(check_out);



        for(int i = 0; i< check_in.size();i++){

            // 체크아웃 리스트 내용을 변경
            // 새벽 5시정각 이상이면 21로 바꾼다.
            // 숫자는 29이다!!!!!!
            if (check_out.get(i)>=29){

                // 해당인덱스는 삭제하고
                check_out.remove(i);

                // 삭제한 순서의 인덱스에 21을 추가한다.
                check_out.add(i,21);

            }
        }



        for (int j = 0; j<check_out.size();j++){

            answer += check_out.get(j)-check_in.get(j);

        }

        //System.out.println(sum);



        return answer;
    }



    public static void main(String[] args) {


        Qtest method = new Qtest();
        int[] arr1 = {9, 9, 9, 9, 7, 9, 8};
        int[] arr2 = {23, 23, 30, 28, 30, 23, 23};
        System.out.println(method.solution(arr1, arr2));








    }


}
profile
이리저리 생각만 많은 사고뭉치입니다.

0개의 댓글