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)
이 연습 문제에서는 자동차 공장의 생산을 분석하는 코드를 작성해요.
자동차는 조립 라인에서 생산돼요. 조립 라인에는 바꿀 수 있는 속도가 있어요. 조립 라인의 속도가 빠를수록 더 많은 자동차가 생산돼요. 하지만 조립 라인의 속도를 바꾸면 성공적으로 생산되는 자동차, 즉 생산 과정에 오류가 없는 자동차의 수도 달라져요.
시간당 생산되는 자동차 수와 성공률을 받아서 시간당 성공적으로 생산되는 자동차 수를 계산하는 함수를 구현해요.
성공률은 0에서 100 사이의 백분율로 주어져요:
CalculateWorkingCarsPerHour(1547, 90)
// => 1392.3
참고: 반환 값은 float64여야 해요.
시간당 생산되는 자동차 수와 성공률을 받아서 분당 성공적으로 생산되는 자동차 수를 계산하는 함수를 구현해요:
CalculateWorkingCarsPerMinute(1105, 90)
// => 16
참고: 반환 값은 int여야 해요.
각 자동차는 성공 여부와 상관없이 개별적으로 생산하는 데 보통 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여야 해요.
Exercism에 가입하고 Go 트랙을 개념 34개연습 문제 165개, 그리고 실제 사람의 멘토링과 함께 배우고 익혀 보세요. 모두 무료예요.