트랙
/
Java
Java
/
연습 문제
/
라자냐 만들기
라자냐 만들기

라자냐 만들기

학습 연습 문제

소개

기초

Java는 정적 타입 언어예요. 즉, 변수의 타입이 컴파일 시점에 정해져요. 이름에 값을 할당하는 것을 변수를 정의한다고 해요. 변수는 타입을 명시적으로 지정해서 정의해요.

int explicitVar = 10;

변수의 값은 = 연산자로 갱신해요. 여기서 =는 수학적인 등호를 뜻하지 않아요. 그냥 변수에 값을 할당할 뿐이에요. 한 번 정의된 변수의 타입은 절대 바뀌지 않아요.

int count = 1; // Assign initial value
count = 2;     // Update to new value

// Compiler error when assigning a different type
// count = false;

Java는 객체 지향 언어이고, 모든 함수를 클래스 안에 정의해야 해요. 클래스를 정의할 때는 class 키워드를 사용해요.

class Calculator {
    // ...
}

클래스 안에 있는 함수를 _메서드_라고 해요. 메서드는 매개변수를 하나도 갖지 않거나 여러 개 가질 수 있어요. 모든 매개변수는 타입을 명시해야 하고, 매개변수에는 타입 추론이 없어요. 마찬가지로 반환 타입도 명시해야 해요. 메서드에서 값을 반환할 때는 return 키워드를 사용해요. 다른 클래스에서 메서드를 호출할 수 있게 하려면 public 접근 제한자를 붙여야 해요.

class Calculator {
    public int add(int x, int y) {
        return x + y;
    }
}

메서드를 호출할 때는 클래스와 메서드 이름을 지정하고, 메서드의 각 매개변수에 맞는 인자를 전달해요.

int sum = new Calculator().add(1, 2);  // here the  "add" method has been called to perform the task of addition

Java에서 스코프는 {와 } 문자 사이로 정의돼요.

Java는 두 가지 종류의 주석을 지원해요. 한 줄 주석은 //로 시작하고, 여러 줄 주석은 /*와 */ 사이에 넣어요.

지침

이 연습 문제에서는 좋아하는 요리책을 보며 근사한 라자냐를 만들 수 있도록 도와주는 코드를 작성해요.

라자냐를 만드는 데 걸리는 시간과 관련된 네 가지 과제가 있어요.

1. 오븐 예상 시간을 분 단위로 정의해요

매개변수를 받지 않고, 라자냐가 오븐에 있어야 하는 시간(분)을 반환하는 expectedMinutesInOven() 메서드를 정의해요. 요리책에 따르면 예상 오븐 시간은 40분이에요:

Lasagna lasagna = new Lasagna();
lasagna.expectedMinutesInOven();
// => 40

2. 남은 오븐 시간을 분 단위로 계산해요

오븐에 실제로 넣어 둔 시간(분)을 매개변수로 받아, 이전 과제에서 구한 예상 오븐 시간을 기준으로 라자냐가 오븐에 더 있어야 하는 시간(분)을 반환하는 remainingMinutesInOven() 메서드를 정의해요.

Lasagna lasagna = new Lasagna();
lasagna.remainingMinutesInOven(30);
// => 10

3. 준비 시간을 분 단위로 계산해요

라자냐에 추가한 층 수를 매개변수로 받아, 각 층을 준비하는 데 2분이 걸린다고 가정할 때 라자냐를 준비하는 데 걸린 시간(분)을 반환하는 preparationTimeInMinutes() 메서드를 정의해요.

Lasagna lasagna = new Lasagna();
lasagna.preparationTimeInMinutes(2);
// => 4

4. 총 작업 시간을 분 단위로 계산해요

두 개의 매개변수를 받는 totalTimeInMinutes() 메서드를 정의해요. 첫 번째 매개변수는 라자냐에 추가한 층 수이고, 두 번째 매개변수는 라자냐를 오븐에 넣어 둔 시간(분)이에요. 이 메서드는 라자냐를 만드는 데 총 몇 분을 작업했는지를 반환해야 해요. 이는 준비 시간(분)과 현재까지 라자냐가 오븐에 있던 시간(분)을 더한 값이에요.

Lasagna lasagna = new Lasagna();
lasagna.totalTimeInMinutes(3, 20);
// => 26
GitHub에서 편집 링크가 새 창이나 탭에서 열려요
Java Exercism

라자냐 만들기 문제를 시작해 볼 준비가 됐나요?

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