문제
factory method 패턴은 객체가 어떻게 생성되는지 숨깁니다: 이름으로 팩토리에게 도형을 요청하면, 자신의 넓이를 계산할 줄 아는 객체를 돌려줍니다.
각 설명은 공백으로 구분된 도형 이름과 숫자들로 이루어집니다:
circle r: 넓이 π·r²square s: 넓이 s²rectangle w h: 넓이 w·htriangle b h: 넓이 b·h / 2
shape_factory_areas(shapes)를 구현하세요.
입력
shapes: 설명들입니다. 숫자에는 소수가 있을 수 있습니다.
출력
각 도형의 넓이를 순서대로 반환하세요. 1e-6 이내의 오차는 허용됩니다.
제약 조건
1 ≤ 도형 수 ≤ 1,000
0 < 모든 수 ≤ 1,000
예시
예시 1
입력:
shapes = ["square 3", "rectangle 2 5", "triangle 4 3"]
예상 출력:
expected = [9.0, 10.0, 6.0]
입력:
std::vector<std::string> shapes = {"square 3", "rectangle 2 5", "triangle 4 3"};
예상 출력:
std::vector<double> expected = {9.0, 10.0, 6.0};
입력:
string[] shapes = new string[] {"square 3", "rectangle 2 5", "triangle 4 3"};
예상 출력:
double[] expected = new double[] {9.0, 10.0, 6.0};
설명
3² = 9, 2·5 = 10, 4·3/2 = 6.
예시 2
입력:
shapes = ["circle 1"]
예상 출력:
expected = [3.141592653589793]
입력:
std::vector<std::string> shapes = {"circle 1"};
예상 출력:
std::vector<double> expected = {3.141592653589793};
입력:
string[] shapes = new string[] {"circle 1"};
예상 출력:
double[] expected = new double[] {3.141592653589793};
설명
π·1² = π ≈ 3.141593.
접근 방법
먼저 스스로 풀어 본 뒤 힌트를 하나씩 열어 보세요.
힌트 1
첫 단어를 읽고 어떤 도형을 만들지 정하세요.
힌트 2
도형 이름마다 넓이 공식을 연결하세요.
힌트 3
언어의 수학 라이브러리에 있는 π를 쓰고 정밀도를 유지하세요.
예상 복잡도
시간 O(도형 수), 추가 공간 O(도형 수)
참고 자료
이 문제는 CodeUtility에 맞게 수정되었습니다. 위의 설명과 제한 조건을 따르세요.