[백준 31097] Astrology (C#, C++) - soo:bak
작성일 :
문제 링크
설명
주어진 날짜가 어느 별자리 기간에 속하는지 판단하여 별자리 이름을 출력하는 문제입니다.
접근법
날짜에서 월과 일을 추출한 뒤 12개 별자리 구간과 비교합니다. 각 별자리는 특정 월의 특정 일부터 다음 월의 특정 일까지 해당하므로, 월과 일 조합으로 분기 처리합니다. 연말연초에 걸치는 염소자리는 12월과 1월 양쪽을 모두 확인합니다.
Code
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
using System;
class Program {
static void Main() {
var s = Console.ReadLine()!;
var month = int.Parse(s.Substring(5, 2));
var day = int.Parse(s.Substring(8, 2));
string sign = month switch {
3 when day >= 21 => "Aries",
4 when day <= 19 => "Aries",
4 when day >= 20 => "Taurus",
5 when day <= 20 => "Taurus",
5 when day >= 21 => "Gemini",
6 when day <= 20 => "Gemini",
6 when day >= 21 => "Cancer",
7 when day <= 22 => "Cancer",
7 when day >= 23 => "Leo",
8 when day <= 22 => "Leo",
8 when day >= 23 => "Virgo",
9 when day <= 22 => "Virgo",
9 when day >= 23 => "Libra",
10 when day <= 22 => "Libra",
10 when day >= 23 => "Scorpio",
11 when day <= 22 => "Scorpio",
11 when day >= 23 => "Sagittarius",
12 when day <= 21 => "Sagittarius",
12 when day >= 22 => "Capricorn",
1 when day <= 19 => "Capricorn",
1 when day >= 20 => "Aquarius",
2 when day <= 18 => "Aquarius",
2 when day >= 19 => "Pisces",
3 when day <= 20 => "Pisces",
_ => ""
};
Console.WriteLine(sign);
}
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
string s; cin >> s;
int month = stoi(s.substr(5, 2));
int day = stoi(s.substr(8, 2));
string sign;
if ((month == 3 && day >= 21) || (month == 4 && day <= 19)) sign = "Aries";
else if ((month == 4 && day >= 20) || (month == 5 && day <= 20)) sign = "Taurus";
else if ((month == 5 && day >= 21) || (month == 6 && day <= 20)) sign = "Gemini";
else if ((month == 6 && day >= 21) || (month == 7 && day <= 22)) sign = "Cancer";
else if ((month == 7 && day >= 23) || (month == 8 && day <= 22)) sign = "Leo";
else if ((month == 8 && day >= 23) || (month == 9 && day <= 22)) sign = "Virgo";
else if ((month == 9 && day >= 23) || (month == 10 && day <= 22)) sign = "Libra";
else if ((month == 10 && day >= 23) || (month == 11 && day <= 22)) sign = "Scorpio";
else if ((month == 11 && day >= 23) || (month == 12 && day <= 21)) sign = "Sagittarius";
else if ((month == 12 && day >= 22) || (month == 1 && day <= 19)) sign = "Capricorn";
else if ((month == 1 && day >= 20) || (month == 2 && day <= 18)) sign = "Aquarius";
else sign = "Pisces";
cout << sign << "\n";
return 0;
}