카테고리 없음2018. 5. 11. 18:20

******************** 글 보시기 전 참고사항 ********************

우선 제 글을 읽어주셔서 감사합니다.

저는 코딩 전문가가 아니라 일개 컴퓨터공학을 전공하며, 컴퓨터 언어를 사랑하는 대학생입니다.

이 블로그는 제가 자주 들여다보고 싶은, 그리고 이렇게 생각하면 편하여서 사람들과 공유하고 싶은 

그런 저만의 노하우를 담아놓는 공간입니다.

그렇다보니 전문 지식이 아니라 저의 생각 위주로 글이 게시됩니다.

제가 드리고 싶은 말은 제 글이 정답이 아니기에, 읽으시는 분께서 선별적으로 읽어주셨으면 하는 것입니다.

명확히 문제가 되는 부분, 제가 잘못 알고 있는 부분은 지나치지 마시고 

귀찮으시더라도 댓글 한번 달아주시면 감사하겠습니다.

******************************************************************

 

 

 

문제

오늘은 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

예제 출력 1

MON

 

 

 

 

나의 풀이) 

 

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>

 

 

 

int searchMonth(int m) {

int Mo[12] = { 31,28,31,30,31,30,31,31,30,31,30,31 };

int mo = m - 2;

int sum = 0 ;

int result;

for (int i = 0; i <= mo; i++) {

sum = sum + Mo[i];

}

result = sum % 7;

return result;

}

 

int searchDay(int pl, int d) {

int beforeday,day;

beforeday = (d-1) % 7;

day = (beforeday + pl) % 7;

 

return day;

}

 

 

int main() {

 

char week[7][4] = { "MON","TUE","WED","THU","FRI","SAT","SUN" }; // 74열 인데, 각 행의 마지막 열은 \n 널임.

 

int month, day;

int plus;

int finalplus;

 

scanf("%d %d", &month, &day);

plus = searchMonth(month);

finalplus = searchDay(plus, day);

 

printf("%s", week + finalplus);

 

}

 

Posted by 넓스
카테고리 없음2018. 5. 10. 15:10

 

******************** 글 보시기 전 참고사항 ********************

우선 제 글을 읽어주셔서 감사합니다.

저는 코딩 전문가가 아니라 일개 컴퓨터공학을 전공하며, 컴퓨터 언어를 사랑하는 대학생입니다.

이 블로그는 제가 자주 들여다보고 싶은, 그리고 이렇게 생각하면 편하여서 사람들과 공유하고 싶은 

그런 저만의 노하우를 담아놓는 공간입니다.

그렇다보니 전문 지식이 아니라 저의 생각 위주로 글이 게시됩니다.

제가 드리고 싶은 말은 제 글이 정답이 아니기에, 읽으시는 분께서 선별적으로 읽어주셨으면 하는 것입니다.

명확히 문제가 되는 부분, 제가 잘못 알고 있는 부분은 지나치지 마시고 

귀찮으시더라도 댓글 한번 달아주시면 감사하겠습니다.

 

******************************************************************

 

 

int WhoisFirst(int age1, int age2, int(*cmp)(int, int))

 

Posted by 넓스
카테고리 없음2018. 5. 9. 17:26

 

 

******************** 글 보시기 전 참고사항 ********************

우선 제 글을 읽어주셔서 감사합니다.

저는 코딩 전문가가 아니라 일개 컴퓨터공학을 전공하며, 컴퓨터 언어를 사랑하는 대학생입니다.

이 블로그는 제가 자주 들여다보고 싶은, 그리고 이렇게 생각하면 편하여서 사람들과 공유하고 싶은 

그런 저만의 노하우를 담아놓는 공간입니다.

그렇다보니 전문 지식이 아니라 저의 생각 위주로 글이 게시됩니다.

제가 드리고 싶은 말은 제 글이 정답이 아니기에, 읽으시는 분께서 선별적으로 읽어주셨으면 하는 것입니다.

명확히 문제가 되는 부분, 제가 잘못 알고 있는 부분은 지나치지 마시고 

귀찮으시더라도 댓글 한번 달아주시면 감사하겠습니다.

 

******************************************************************

 

 

 

배열명 + 1 이런식으로 하면 배열명[1]의 주소가 된다.

arr + 1 이라고하면 행 부분이 빠져있다. 행부분을 넣는다는게 어떤 것이냐

arr[0] + 1 처럼 하면 행부분을 지정해준 것이다.

arr[0]+1 의 타입은 int * 인 반면에

arr + 1의 타입은 int (*)[4] 이다. 행이 없어서 행의 자리를 지정해주는 것이기에 뒤에 열부분은 [4]라고 채워진다.

 

.

 

==>> 타입을 알아야 하는 이유: 아래 부분에 나오겠지만 포인터변수에 배열을 대입하려면 타입을 생각해야한다.

 

 

 

arr이라고만 하면 3*4 영역 전체를 가르키게되고 (3*4*4 = 48 bytes)

arr[0] 이라고 하면 행은 지정된 상태이므로 나머지 열 4개 * 4 = 16bytes

 

 

arr[3][4] 가 전체 배열이라면, arr[1]이라고만 써놓으면 arr[1]+0과 같다 고로, 첫번째 사진에서의 설명과 같이

배열명+0 처럼 되어

arr[1][0]의 주솟값이 된다.

 

 

 

arr[a][b][c] 라고 하면 a개의 {}와 a-1개의 ,(콤마)를 통해 자리를 마련해주고

a개의 각 {}안에 또

b개의 {}와 b-1개의 ,(콤마)를 통해 자리를 마련해주고

b개의 각 {}안에 또

c개의 {}와 c-1개의 ,(콤마)를 통해 자리를 마련해주라.

 

 

int arr[4]; 의 경우는 포인터로 가져갈 때 int *p = arr; 처럼 하고

int arr[3][4]; 같은 경우 포인터로 가져갈 때 타입을 이용한다 ! int (*p)[4] = arr;

 

 

 

 

Posted by 넓스