모든 챌린지
쉬움 0명 해결 정답률 0%

도형 팩토리

팩토리로 텍스트 설명에서 도형을 만들고 각 도형의 넓이를 반환합니다.

배우게 될 내용

  • 텍스트 설명으로 객체 만들기
  • 생성 과정을 함수 하나 뒤에 숨기기
  • 도형마다 자기 넓이를 계산하게 하기

문제

원문 보기 (영어)

factory method 패턴은 객체가 어떻게 생성되는지 숨깁니다: 이름으로 팩토리에게 도형을 요청하면, 자신의 넓이를 계산할 줄 아는 객체를 돌려줍니다.

각 설명은 공백으로 구분된 도형 이름과 숫자들로 이루어집니다:

  • circle r: 넓이 π·r²
  • square s: 넓이 s²
  • rectangle w h: 넓이 w·h
  • triangle 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에 맞게 수정되었습니다. 위의 설명과 제한 조건을 따르세요.

다른 사람의 풀이 보기

커뮤니티 솔루션

아직 공개된 풀이가 없습니다. 문제를 풀고 첫 풀이를 공유하세요.