※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※
이번에 볼 문제는 백준 12353번 문제인 Dr. Spaceman의 특별한 알고리즘이다.
문제는 아래 링크를 확인하자.
https://www.acmicpc.net/problem/12353
12353번: Dr. Spaceman의 특별한 알고리즘
입력의 첫째 줄에는 테스트 케이스의 개수를 의미하는 T가 주어진다. 그 뒤에는 T개의 라인이 입력된다. 각 라인은 알파벳 한 글자('B'는 남자아이(boy), 'G'는 여자아이(girl))와 공백 한 칸, 엄마의
www.acmicpc.net
문제에서 주어진 것과 같이 자식의 키의 범위를 구해 출력하는 문제이다.
1 피트(ft)는 12 인치(in)과 같다는 점을 이용해 문제를 해결하자.
아래는 제출한 소스코드이다.
#include <iostream>
#include <string>
using namespace std;
void printing(int x) {
cout << x / 12 << '\'' << x % 12 << '\"';
}
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
int T; cin >> T;
for (int t = 1; t <= T; t++) {
cout << "Case #" << t << ": ";
char c; string s1, s2;
cin >> c >> s1 >> s2;
int s1len = s1.length(), s2len = s2.length();
int val = 0;
if (s1len == 4) val += (s1[0] - '0') * 12 + (s1[2] - '0');
else val += (s1[0] - '0') * 12 + 10 + (s1[3] - '0');
if (s2len == 4) val += (s2[0] - '0') * 12 + (s2[2] - '0');
else val += (s2[0] - '0') * 12 + 10 + (s2[3] - '0');
if (c == 'B') val += 5;
else val -= 5;
bool odd = val & 1;
val /= 2;
if (odd) {
printing(val - 3);
cout << " to ";
printing(val + 4);
cout << '\n';
}
else {
printing(val - 4);
cout << " to ";
printing(val + 4);
cout << '\n';
}
}
}
728x90
'BOJ' 카테고리의 다른 글
[BOJ 16991 // C++] 외판원 순회 3 (0) | 2022.07.17 |
---|---|
[BOJ 24519 // C++] Bottleneck Travelling Salesman Problem (Large) (0) | 2022.07.17 |
[BOJ 12352 // C++] Hedgemony (Large) (0) | 2022.07.17 |
[BOJ 13226 // C+] Divisors Again (0) | 2022.07.16 |
[BOJ 13982 // C++] Shopping (0) | 2022.07.15 |