-
chapter2) 그 해의 남은 일 수 구하기PS/etc 2020. 7. 9. 21:11
// 그 해의 남은 일수 구하기 public class Q9 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int retry; System.out.println("그 해 남 일수를 구합니다"); do { System.out.print("년 : "); int year = scanner.nextInt(); System.out.print("월 : "); int month = scanner.nextInt(); System.out.print("일 : "); int day = scanner.nextInt(); System.out.printf("남은 일수는 %d일입니다.\n", remainDayOfYear(year, month, day)); System.out.print("한 번 더 할까요? (1.예 / 0.아니요) : "); retry = scanner.nextInt(); } while (retry == 1); } static int[][] mdays = { { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }, // 평년 0 { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }, // 윤년 1 [1][11] }; // 윤년 1 , 평년 0 static int isLeap(int year) { return (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) ? 1 : 0; } // days에서 지금까지의 날을 빼면 남은 일수 static int remainDayOfYear(int y, int m, int d) { int days = ( isLeap(y) == 1 ? 366 : 365 ) - d; for (int i = 0; i < m-1; i++) { days -= mdays[isLeap(y)][i]; } return days; } }
(1)
// 서기 y년 m월 d일의 연내의 남은 일 수를 구합니다. static int leftDayOfYear(int y, int m, int d) { int days = d; // 일수 for (int i = 1; i < m; i++) // 1월~(m-1)월의 일 수를 더함 days += mdays[isLeap(y)][i - 1]; return 365 + isLeap(y) - days; }
(2)
- 윤년일때와 평년일때를 구분한뒤에 남은 일 수 빼기
- 답안과 유사하게 풀이한듯
※참조
Do it! 자료구조와 함께 배우는 알고리즘 입문'PS > etc' 카테고리의 다른 글
우테코 3기 코테 후기 (0) 2020.11.07 chapter3-Q3) 배열에서의 검색 (0) 2020.07.13 chapter2) 그 해의 경과 일 수 구하기 (0) 2020.07.09 chapter2) 소수 구하기 (0) 2020.07.09 chapter2) 10진수 변환 (0) 2020.07.08