Page 87 - Do it! 자료구조와 함께 배우는 알고리즘(C 언어, 3쇄)
P. 87
월-1의 값을 인덱스로 합니다.
0 1 2 3 4 5 6 7 8 9 10 11
평년 0 31 28 31 30 31 30 31 31 30 31 30 31
윤년 1 31 29 31 30 31 30 31 31 30 31 30 31
[그림 2-19] 각 달의 날 수를 저장한 2차원 배열
실습 2-12의 dayofyear 함수는 각 달의 날 수를 저장하는 2차원 배열 mdays를 사용하여 2
월을 특별히 다루지 않고 날 수를 계산합니다. 그림 2-19에서 볼 수 있듯이 배열 mdays의 구
성 요소에는 아래의 값이 들어갑니다.
인덱스가 0인 행의 구성 요소 mdays[0][0], mdays[0][1], …, mdays[0][11]
평년 1월, 2월, …, 12월의 날 수
인덱스가 1인 행의 구성 요소 mdays[1][0], mdays[1][1], …, mdays[1][11]
윤년 1월, 2월, …, 12월의 날 수
isleap 함수는 매개변수 year로 받은 연도가 윤년이면 1을, 평년이면 0을 반환하는 함수입니
다. 그러므로 y년 i달의 날 수는 mdays[isleap(y)][i – 1]로 구할 수 있습니다.
Q11 dayofyear 함수를 변수 i와 days를 사용하지 않고 구현해 보세요. 또한 for문이 아닌
연습
문제 while문을 사용하세요.
보충수업 2-8 다차원 배열의 초기화
다차원 배열의 초기화는 { }를 겹치는 방식으로 합니다. 예를 들어, 2행 3열의 2차원 배열 ma의 각 구
성 요소를 앞쪽부터 차례대로(1, 2, 3, 4, 5, 6) 초기화하려면
같은 초기화 방식입니다.
int ma[2][3] = {{1, 2, 3}, {4, 5, 6}};
이라고 선언합니다. 초기화의 개수로 요소 개수를 알 수 있는 경우에는 맨 앞쪽 요소 개수를 생략할
수 있습니다. 예를 들어, 2를 생략하고 아래처럼 선언할 수 있습니다.
02• 기본 자료구조 87