본문 바로가기
OLD_알고리즘/Baekjoon

백준] 1924 : 2007년 (헷)

by 달승 2020. 7. 12.

BOJ에서 다음 문제들을 쭉 순서대로 풀어본다.  boj.kr/문제번호 <= 형태로 검색하면 된다.

입출력 - 2557, 1000, 2558, 10950, 10951, 1095210953, 11021, 11022, 11718, 117191172011721274127422739, 1924, 8393, 10818, 2438, 2439, 2440, 2441, 2442, 2445, 2522, 2446, 10991, 10992

 

입출력 문제들을 풀 때 10분이상 이 문제를 붙들고 있는 경우, 그건 입출력에서 뭔가 모르는 부분이 반드시 있다는 뜻이므로 이전 질문들을 무조건 찾아보고 다른 사람이 푼 코드를 반드시 봐야 한다.

 

 

알고리즘 문제풀이(PS) 시작하기

이런건 고수들이나 써야 하지 않나 싶지만, 그래도 1년정도 공부하면서 이 분야를 어떻게 시작해야 할지 써보려 한다. 라고 운을 뗀다음 열심히 내 얘기만 했던 후속편이다. 내 인생사가 궁금하�

plzrun.tistory.com

 

 

 

내가 애용하는 IDE 사이트

(IDE 자동 완성이 불가능하기 때문에 사용하는 중)

 

Ideone.com

Ideone is something more than a pastebin; it's an online compiler and debugging tool which allows to compile and run code online in more than 40 programming languages.

ideone.com


 

 

1924번: 2007년

첫째 줄에 빈 칸을 사이에 두고 x(1≤x≤12)와 y(1≤y≤31)이 주어진다. 참고로 2007년에는 1, 3, 5, 7, 8, 10, 12월은 31일까지, 4, 6, 9, 11월은 30일까지, 2월은 28일까지 있다.

www.acmicpc.net

 

문제  : 

오늘은 2007년 1월 1일 월요일이다.

그렇다면 2007년 x월 y일은 무슨 요일일까? 이를 알아내는 프로그램을 작성하시오.

 

입력  : 

첫째 줄에 빈 칸을 사이에 두고 x(1≤x≤12)와 y(1≤y≤31)이 주어진다.

참고로 2007년에는 1, 3, 5, 7, 8, 10, 12월은 31일까지,

4, 6, 9, 11월은 30일까지,

2월은 28일까지 있다.

 

출력  : 

첫째 줄에 x월 y일이 무슨 요일인지에 따라 SUN, MON, TUE, WED, THU, FRI, SAT중 하나를 출력한다

 

 

 

내가 생각한 풀이

1. 1월 1일이 MON
            31일은 WED
     2월은 THU부터 시작.

2. 요일은 배열에.
     y값에 따라 요일 출력

   -> 31일까지 일 때, 만약 14일이면 (14일 % 7) 
   -> 30일까지 일 때, 만약 2일이면 (2일 / 7)

 

 

다른 사람 풀이

 

(1) C++ & https://blockdmask.tistory.com/247 [개발자 지망생]

1월 1일 부터 x월 y일 까지의 day의 총 수를 구한 후
일주일로 나누어 남은 나머지를 이용하여 요일을 구하면 됩니다.

x월 까지의 day 수를 구하기 위해 각 월마다 일 수를 배열에 저장을 합니다.

1월 1일이 월요일 이므로 따로 계산을 하지 않게 하기 위해
string 배열 day의 idx=1 일때 월요일로 시작하도록 배열을 선언합니다.
(1월1 일이 1번째 이므로 7로 나누었을때 나머지 1 => 월요일)

 

(2) C &  developerin.tistory.com/35

배열을 활용하여 월 별 일수와 요일을 선언해둡니다.
그리고 1월부터 x - 1 월까지 모든 월의 일수를 y에 더하여 총 일수를 구합니다.

1월 1일이 월요일이므로 총 일수를 7로 나눈 나머지가 요일이 됩니다.

마찬가지로 선언해둔 char* 배열을 사용하여 출력해줍니다.

 

 

 

정답 코드

#include <iostream>
#include <string>
using namespace std;

int main() {
	
	int day[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
	string dayoftheweek[7] = {"SUN","MON","TUE","WED","THU","FRI","SAT"};
	int week = 7;
	int x = 0, y = 0;
	int result = 0;
	
	cin >> x >> y;
	
	for(int i = 0; i < x-1; i++){
		y += day[i];
	}
	result = y % week;
	
	cout << dayoftheweek[result];

	return 0;
}

'OLD_알고리즘 > Baekjoon' 카테고리의 다른 글

백준] 10818 : 최소, 최대  (0) 2020.07.12
백준] 8393 : 합  (0) 2020.07.12
백준] 2739 : 구구단  (0) 2020.07.12
백준] 2742 : N 찍기  (0) 2020.07.12
백준] 2741 : N 찍기  (0) 2020.07.11

댓글