항해99 18일차 TIL

Colleen·2023년 1월 31일
0
post-thumbnail
post-custom-banner

18일차

코딩 테스트 예비 고사

오늘은 간단한 코딩테스트를 본 날이였다. 풀어봤던 문제와 비슷하게 나왔고 소신것 문제를 생각한대로 쓴다면 간단하게 풀 수 있는 문제라고 생각한다. //하지만 목요일 본고사때는 알수 없으니 더 더욱 열심히 공부 해야 할 것 같다.

문제1

문제를 이해해서 풀어 보자면, 1일차 날짜를 넣었을때 마지막 날을 계산해서 출력해야 하는 문제이다.

나의 코드

public class Test01 {
    public static String solution(int month, int day) {
        int[] days = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
        int[] month1 = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
        int index = month - 1;
        int date = days[index] + 98 - ( days[index]-day) ;

        for (int i = 0; i < month1.length; i++) {
            if (date < 30) {
                return month1[index] + "월 " + date + "일 ";
            }
            date -= days[index++];

        }
        return "틀림";
    }

    public static void main(String[] args) {
        System.out.println(solution(1, 18));
    }
}

달과 일을 받고 해당 달의 날짜 +98 일 그리고 달의 날짜와 겹치는 날짜 만큼을 제외했다.
그리고 반복문을 이용해서 해당 달에 날짜 수만큼 제외하고 그 수가 30이하일때 달과 일을 출력하는 형태의 코드를 작성했다. 다른 예외 사항도 생각이 났으나, 일단은 원하는 결과 값을 가지기에는 문제가 없었던 것 같다.

문제2


이 문제는 어렵지는 않았으나, 문제 내부에 있는 새벽 5시가 넘어 갔을때, 오후9시로 체크 아웃 시간을 바꾼다. 이 문장을 잘 생각하고 문제를 풀어야 한다고 생각한다.
(왜냐하면, 내가.. 문제를 이해 하는데 한참 걸렸던 이유가 저 문장 때문이다.)

나의 코드

public class Test02 {
    public int solution(int[] arr, int[] arr2){
        int answer = 0;
        for (int i =0; i < arr.length; i++){
            if(arr2[i] >= 29){
                arr2[i] = 21;
            }
            answer += arr2[i] - arr[i];
        }

        return answer;
    }

    public static void main(String[] args) {
        Test02 test = new Test02();
        int[] arr1 = {9, 9, 9, 9, 7, 9, 8};
        int[] arr2 = {23, 23, 30, 28, 30, 23, 23};
        System.out.println(test.solution(arr1, arr2));
    }
}

두 배열의 길이가 같으니 반복문을 이용해 해당배열의 수가 29(새벽5시) 보다 같거나 크면 21로 바꿔주고 체크 아웃 배열의 값과 체크인 배열의 값을 빼서 answer변수에 계속 더해주는 형태로 코드를 짰다. 잘 푼지는 모르겠지만 오늘도 고민하면서 성장하는 시간을 가질 수 있었던 것같다.

profile
이상한 나라의 개발하는 예대생
post-custom-banner

0개의 댓글