※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※

 

이번에 볼 문제는 백준 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

+ Recent posts