Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Kafka
- 남궁성과 끝까지 간다
- 항해99
- 스프링의 정석
- 프로그래머스
- 데이터베이스
- MYSQL
- @jsonproperty
- 시큐리티
- DB
- java
- JWT
- JavaScript
- 스파르타코딩클럽
- 카프카
- visualvm
- 생성자 주입
- docker
- EC2
- 개인프로젝트
- AWS
- 웹개발
- 스웨거
- 패스트캠퍼스
- CentOS
- Spring Security
- 쇼트유알엘
- emqx
- WEB SOCKET
- Spring
Archives
- Today
- Total
Nellie's Blog
[항해99 10기] 알고리즘 모의고사 - 신대륙 발견 본문
728x90
1번. 신대륙 발견
기원이는 오늘 항해99를 시작했다. 성격이 급한 기원이는 항해 1일 차부터 언제 수료를 하게될 지 궁금하다.
항해 1일 차 날짜를 입력하면 98일 이후 항해를 수료하게 되는 날짜를 계산해주는 알고리즘을 만들어보자.
제한 조건
- 1 ≤ month ≤ 12
- 1 ≤ day ≤ 31 (2월은 28일로 고정합니다, 즉 윤일은 고려하지 않습니다.)
- 아래 답안 포맷을 참고하여 답안을 작성해주시기 바랍니다
public class Main {
public String solution(int month, int day) {
String answer = "";
return answer;
}
public static void main(String[] args) {
Main method = new Main();
System.out.println(method.solution(1, 18));
}
}
내 답변
public class Main {
public String solution(int month, int day) {
String answer = "";
int monthTotalDay = 0;
int[] mon = {31,29,31,30,31,30,31,31,30,31,30,31,31,29,31,30,31,30,31,31,30,31,30};
// 월 일수 구하기
for(int i = 0; i < month - 1; i++) {
monthTotalDay += mon[i];
}
// 일 수 구하기
monthTotalDay += day;
// 98일 더하기
int finalTotalDay = monthTotalDay + 98;
int realMonth = 0;
// 월로 계속 나누기. 대강 98일이니까 4로 잡기
for(int i = 0; i < month + 4; i++) {
realMonth = finalTotalDay / mon[i]; // 3
break;
}
// 1~4월달의 합 날짜 계산하기
int monthDaySum = 0;
for(int i = 0; i < realMonth; i++) {
monthDaySum += mon[i];
}
//최종 일수합을 최총 월수합으로 나누어 일수 계산하기
int realRestDay = finalTotalDay % monthDaySum;
answer = realMonth + 1 + "월" + realRestDay + "일";
return answer;
}
public static void main(String[] args) {
Main method = new Main();
System.out.println(method.solution(1, 18));
}
}
https://www.youtube.com/watch?v=RUZ34bNB1AA
다른 답변
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
public class Main {
public static String solution(int month, int day) {
Calendar cal = Calendar.getInstance(); // cal객체생성
cal.set(2022, month-1, day); // 매개변수로 받은 월, 일을 cal에 저장
cal.add(Calendar.DAY_OF_MONTH, 98); // cal에 98 더하여 저장
DateFormat df = new SimpleDateFormat("M월 d일"); //DateFormat객체생성 및 날짜형식설정
String answer = df.format(cal.getTime()); // DateFormat에 cal시간저장하고 answer에넣기
return answer;
}
public static void main(String[] args) {
Main method = new Main();
System.out.println(method.solution(1, 18));
}
}
// 4월 26일 출력
2시간동안 푸는 거였는데,,
시간이 없어서 일단 이렇게 풀긴 했는데, 계산 결과가 미세하게 자꾸 틀린다..ㅠㅠㅎ
진짜 어렵긴하당,,,,ㅎ ㅠㅠㅠ
'회고록 > 항해99' 카테고리의 다른 글
[항해99] Spring 입문주차 1주차 정리 - JPA기초, 메모장 만들기 (0) | 2022.11.30 |
---|---|
[항해99 10기] 알고리즘 모의고사 - 3번. 소수의 개수와 덧셈 (0) | 2022.11.24 |
Git GUI 소스트리(SourceTree) 사용법 (0) | 2022.11.15 |
[flask] JWT를 사용한 회원가입/로그인 기능 구현하기 (0) | 2022.11.15 |
[Chapter 1] 미니프로젝트 S.A(Starting Assignment) (0) | 2022.11.14 |