728x90
1. 문제
https://codeup.kr/problem.php?id=2041
[출처 : 코드업(https://codeup.kr/)]
이번 문제는 생일순으로 입력된 회원의 월과 일이 주어지면 가장 나이가 많은 회원과 어린 회원의 나이차를 구하는 문제입니다.
2. 풀이방법
STEP 1. n번째 회원의 "월"과 n+1번째 회원의 "월"을 비교
STEP 2. "월"이 같은경우 "일"을 비교
3. 해답
#ifdef _main
#include <stdio.h>
int month(char* Arr) {
if (strcmp(Arr, "January") == 0) return 1;
else if (strcmp(Arr, "February") == 0) return 2;
else if (strcmp(Arr, "March") == 0) return 3;
else if (strcmp(Arr, "April") == 0) return 4;
else if (strcmp(Arr, "May") == 0) return 5;
else if (strcmp(Arr, "June") == 0) return 6;
else if (strcmp(Arr, "July") == 0) return 7;
else if (strcmp(Arr, "August") == 0) return 8;
else if (strcmp(Arr, "September") == 0) return 9;
else if (strcmp(Arr, "October") == 0) return 10;
else if (strcmp(Arr, "November") == 0) return 11;
else if (strcmp(Arr, "December") == 0) return 12;
else return 0;
}
int day(char* Arr) {
int tmp = 0;
for (int i = 0; i < strlen(Arr) - 2; i++) {
tmp = (10 * tmp) + ((int)Arr[i] - 48);
}
return tmp;
}
int main()
{
char name[100][51];
char tmp1[15], tmp2[15];
int n, c = 0;
int arr[100][2];
scanf("%d", &n);
for (int i = 0; i < n; i++) {
scanf("%s %s %s", name[i], tmp1, tmp2);
arr[i][0] = month(tmp1);
arr[i][1] = day(tmp2);
}
for (int i = 0; i < n - 1; i++) {
// 먼저 입력한 회원의 월이 다음 회원의 월보다 느리면
if (arr[i][0] > arr[i + 1][0]) {
c++;
}
// 같은 월에 태어났으면
else if (arr[i][0] == arr[i + 1][0]) {
// 먼저 입력한 회원의 일이 다음 회원의 일보다 느리면
if (arr[i][1] > arr[i + 1][1]) c++;
}
}
if (c == 0) printf("No difference.");
else if(c == 1) printf("%s is %d year older than %s.", name[0], c, name[n - 1]);
else printf("%s is %d years older than %s.", name[0], c, name[n - 1]);
return 0;
}
'프로그래밍 > CodeUp' 카테고리의 다른 글
CodeUp[Q_2112] : 매우 큰 수의 비교 (0) | 2020.03.29 |
---|---|
CodeUp[Q_2042] : 소화기가 필요해 (0) | 2020.03.28 |
CodeUp[Q_2035] : 앉을 수 있는 자리 (0) | 2020.03.26 |
CodeUp[Q_2034] : 인수 분해 (0) | 2020.03.25 |
CodeUp[Q_2029] : 숫자 끼워 넣기 (0) | 2020.03.24 |