본문 바로가기
ALGORITHM/푼 문제들&과정

[JAVA] 백준 1924번

by sjs_2215 2019. 1. 31.

https://www.acmicpc.net/problem/1924

첫 시도:

도무지 감이 안잡혀서 먼저 1월 달력만 해당하게 프로그램을 만들어 보기로 함

문제점:

나머지가 요일별로 다르다는 건 바로 알게됨 (그나마 다행;)

다른 월도 해당하게 코딩해보기로 함

요일은 바뀌는 거니까 요일을 조건으로 잡아야 하나 생각됨.

package till;
import java.util.*;

public class Main {
   public static void main(String[] args) {
 
  Scanner scan=new Scanner(System.in);
  int x=scan.nextInt();
  int y=scan.nextInt();
 
  //1월만
  if(y%7==1){
  System.out.print("MON");
  }
  if(y%7==2){
  System.out.print("TUE");
  }
  if(y%7==3){
  System.out.print("WED");
  }
  if(y%7==4){
  System.out.print("THU");
  }
  if(y%7==5){
  System.out.print("FRI");
  }
  if(y%7==6){
  System.out.print("SAT");
  }
  if(y%7==0){
  System.out.print("SUN");
  }
   
  }
}


두 번째 시도:

package till;
import java.util.*;

public class Main {
   public static void main(String[] args) {
  /*
  * 월마다 다른 일자수는 어떻게 처리?
  *
  */
 
  Scanner scan=new Scanner(System.in);
  int x=scan.nextInt();//월 input
  int y=scan.nextInt();//일 input

  month(x);  
 
  }
   
   public static int lastday(int x) {
  int temp=0;
  if(x==1){
  temp=32;
  }
  return 1;
  }
   
   public static void month(int x) {
  if(x==1||x==3||x==5||x==7||x==8||x==10||x==12){
  for(int j=1;j<=31;j++){
  System.out.print("a");
  if(j%7==0){
  System.out.println(" ");
  }
  }
  }
  else if(x==4||x==6||x==9||x==11){
  for(int j=1;j<=30;j++){
  System.out.print("a");
  if(j%7==0){
  System.out.println(" ");
  }
  }
  }
  else{
  for(int j=1;j<=29;j++){
  System.out.print("a");
  if(j%7==0){
  System.out.println(" ");
  }
  }
  }
  }
 
 
}


세 번째 시도:(해답 봄) 해답

배열에 저장해둬야 하는 걸 알게됨

월마다 다른 일수를 어떻게 처리? -> 일수를 다 더하고 그냥 그 total에서 나머지 연산으로 날짜 출력하면 되는 거였음.

문제점:

해답 대충 봄.

input값은 어디로?

일수 다 더하는 total이 있어야겠다는 생각은 했는데 그걸 너무 어렵게 생각한듯

-첫시도에서 만든 긴 if문을

String[] days={"SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"};
int[] monthNum={31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

System.out.println(days[total%7]);

이렇게 생각하면 됐었던 거지

package till;
import java.util.*;

public class Main {
   public static void main(String[] args) {
  String[] days={"SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"};
  int[] monthNum={31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
 
  Scanner scan=new Scanner(System.in);
  int x=scan.nextInt();//월 input
  int y=scan.nextInt();//일 input
  int total=0;//일수 구하기 위한
 
  for(int i=0;i<monthNum.length;i++) {
  total+=monthNum[i];
  }
 
  System.out.println(days[total%7]);
 
  }
 
}


네 번째 시도:

만약 3월 12일의 요일을 알고 싶으면

1월의 일수와 2월의 일수를 더하고 12를 더한 총 일수에서 %7을 해주어 요일을 알면 됨

그래서 for문을 x-1동안 돌고, total을 y값으로 디폴트 주도록 변경.

package till;
import java.util.*;

public class Main {
   public static void main(String[] args) {
  String[] days={"SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"};
  int[] monthNum={31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
 
  Scanner scan=new Scanner(System.in);
  int x=scan.nextInt();//월 input
  int y=scan.nextInt();//일 input
  int total=y;//일수 구하기 위한
 
  for(int i=0;i<x-1;i++) {
  total+=monthNum[i];
  }
 
  System.out.println(days[total%7]);
 
  }
 
}


'ALGORITHM > 푼 문제들&과정' 카테고리의 다른 글

[JAVA] 백준 1065번  (0) 2019.03.03
[JAVA] 백준 4344번  (0) 2019.02.27
[JAVA] 백준 4673번  (0) 2019.02.26
[JAVA] 백준 10817번  (0) 2019.02.01
[JAVA] 백준 11720번  (0) 2019.01.30

Comments