트랙
/
Go
Go
/
연습 문제
/
자동차 조립
자동차 조립

자동차 조립

학습 연습 문제

소개

숫자

Go에는 정수 값이나 실수 값을 나타낼 수 있는 기본 숫자 타입이 있어요. 필요한 값의 크기와 애플리케이션이 실행되는 컴퓨터의 아키텍처(예: 32비트와 64비트)에 따라 타입이 달라요.

이 연습 문제에서는 다음 타입만 다뤄요:

  • int: 예: 0, 255, 2147483647. 크기가 최소 32비트인 부호 있는 정수예요 (값 범위: -2147483648부터 2147483647까지). 하지만 이는 시스템 아키텍처에 따라 달라져요. 대부분의 최신 컴퓨터는 64비트라서 int의 크기는 64비트가 돼요 (값 범위: -9223372036854775808부터 9223372036854775807까지).

  • float64: 예: 0.0, 3.14. 모든 64비트 부동소수점 수의 집합을 담고 있어요.

  • uint: 예: 0, 255. int와 크기가 같은 부호 없는 정수예요 (값 범위: 32비트의 경우 0부터 4294967295까지, 64비트의 경우 0부터 18446744073709551615까지)

숫자는 타입 변환을 통해 다른 숫자 타입으로 변환할 수 있어요.

산술 연산자

Go는 다양한 표준 산술 연산자를 지원해요:

연산자 예
+ 4 + 6 == 10
- 15 - 10 == 5
* 2 * 3 == 6
/ 13 / 3 == 4
% 13 % 3 == 1

정수 나눗셈에서는 나머지가 버려져요 (예: 5 / 2 == 2).

Go에는 위 연산자들을 위한 축약 대입이 있어요 (예: a += 5는 a = a + 5의 축약형이에요). Go는 증가 및 감소 문 ++와 --도 지원해요 (예: a++).

타입 간 변환

타입 간 변환은 변환하려는 타입의 이름을 가진 함수를 통해 이뤄져요. 예를 들어:

var x int = 42 // x has type int
f := float64(x) // f has type float64 (ie. 42.0)
var y float64 = 11.9 // y has type float64
i := int(y) // i has type int (ie. 11)

서로 다른 타입에서의 산술 연산

많은 언어에서는 서로 다른 타입의 변수에 산술 연산을 할 수 있지만, Go에서는 오류가 발생해요. 예를 들어:

var x int = 42

// this line produces an error
value := float32(2.0) * x // invalid operation: mismatched types float32 and int

// you must convert int type to float32 before performing arithmetic operation
value := float32(2.0) * float32(x)

지침

이 연습 문제에서는 자동차 공장의 생산을 분석하는 코드를 작성해요.

1. 시간당 생산되는 정상 차량 수 계산하기

자동차는 조립 라인에서 생산돼요. 조립 라인에는 바꿀 수 있는 속도가 있어요. 조립 라인의 속도가 빠를수록 더 많은 자동차가 생산돼요. 하지만 조립 라인의 속도를 바꾸면 성공적으로 생산되는 자동차, 즉 생산 과정에 오류가 없는 자동차의 수도 달라져요.

시간당 생산되는 자동차 수와 성공률을 받아서 시간당 성공적으로 생산되는 자동차 수를 계산하는 함수를 구현해요. 성공률은 0에서 100 사이의 백분율로 주어져요:

CalculateWorkingCarsPerHour(1547, 90)
// => 1392.3

참고: 반환 값은 float64여야 해요.

2. 분당 생산되는 정상 차량 수 계산하기

시간당 생산되는 자동차 수와 성공률을 받아서 분당 성공적으로 생산되는 자동차 수를 계산하는 함수를 구현해요:

CalculateWorkingCarsPerMinute(1105, 90)
// => 16

참고: 반환 값은 int여야 해요.

3. 생산 비용 계산하기

각 자동차는 성공 여부와 상관없이 개별적으로 생산하는 데 보통 10,000달러가 들어요. 하지만 조금만 계획을 세우면 자동차 10대를 함께 생산해서 95,000달러에 만들 수 있어요.

예를 들어 자동차 37대는 다음과 같은 방식으로 생산할 수 있어요: 37 = 10대씩 묶음 3개 + 낱개 자동차 7대

따라서 자동차 37대의 비용은 다음과 같아요: 3*95,000+7*10,000=355,000

성공 여부와 상관없이 여러 대의 자동차를 생산할 때 드는 비용을 계산하는 CalculateCost 함수를 구현해요:

CalculateCost(37)
// => 355000

CalculateCost(21)
// => 200000

참고: 반환 값은 uint여야 해요.

GitHub에서 편집 링크가 새 창이나 탭에서 열려요
Go Exercism

자동차 조립 문제를 시작해 볼 준비가 됐나요?

Exercism에 가입하고 Go 트랙을 개념 34개연습 문제 165개, 그리고 실제 사람의 멘토링과 함께 배우고 익혀 보세요. 모두 무료예요.