Java 직접 코딩 문제: Unit 1.1-1.15¶
이름: ____________
- 각 문제는 직접 Java 코드를 작성하는 문제입니다.
- 별도 지시가 없으면 파일 이름은
Main.java, 클래스 이름은Main으로 작성하세요.- 입력이 필요한 문제는
Scanner를 사용하세요.- 실행 예시는 출력 형식을 보여 주기 위한 예시입니다.
Unit 1.1 Introduction to Algorithms, Programming, and Compilers¶
문제 1. 환영 메시지¶
다음 두 줄을 정확히 출력하는 프로그램을 작성하세요.
실행 예시
Welcome aboard!
Java program ready.
문제 2. 탑승 안내문¶
BoardingCard.java 파일에 public class BoardingCard를 작성하세요. 프로그램은 아래 네 줄을 순서대로 출력해야 합니다.
실행 예시
Gate: 8
Destination: Busan
Departure: 09:30
Status: ON TIME
문제 3. 문법 오류 고치기¶
아래 프로그램의 문법 오류를 모두 고쳐 실행 가능한 Badge.java를 작성하세요. 출력 내용은 실행 예시와 같아야 합니다.
Public class badge
{
public static void Main(String[] args)
{
system.out.println("Visitor Badge")
}
}
실행 예시
Visitor Badge
문제 4. 알고리즘 순서대로 출력하기¶
입장 절차 알고리즘이 다음과 같습니다.
1. Print "Check ID"
2. Print "Scan Ticket"
3. Print "Open Gate"
4. Print "Enjoy the event"
이 순서를 그대로 Java 출력문으로 작성하세요.
실행 예시
Check ID
Scan Ticket
Open Gate
Enjoy the event
문제 5. 컴파일되는 계산 프로그램¶
10 / 2의 결과를 출력하는 프로그램을 작성하세요. 클래스, main 메서드, 세미콜론, 중괄호를 모두 올바르게 사용해야 합니다.
실행 예시
5
Unit 1.2 Variables and Data Types¶
문제 1. 관측소 기록¶
관측소 이름, 방문자 수, 구름 비율, 망원경 작동 여부를 각각 String, int, double, boolean 변수에 저장하고 한 줄씩 출력하는 프로그램을 작성하세요.
조건
- observatoryName:
North Ridge - visitorCount:
42 - cloudCoverage:
18.5 - telescopeRunning:
true
실행 예시
Observatory: North Ridge
Visitors: 42
Cloud Coverage: 18.5
Telescope Running: true
문제 2. 책장 정보¶
책장 이름, 책 수, 평균 책 두께, 정리 완료 여부를 적절한 자료형의 변수로 선언하고 출력하세요.
조건
- shelfName:
Shelf A - bookCount:
28 - averageThickness:
2.4 - organized:
false
실행 예시
Shelf: Shelf A
Books: 28
Average Thickness: 2.4
Organized: false
문제 3. 열차 티켓 변수¶
열차 코드 KTX-217, 좌석 번호 15, 요금 59000.0, 결제 여부 true를 변수에 저장하고 라벨과 함께 출력하세요.
실행 예시
Train: KTX-217
Seat: 15
Fare: 59000.0
Paid: true
문제 4. 잘못된 선언 고치기¶
아래 의도를 만족하도록 올바른 변수 선언을 작성하고 값을 출력하세요.
의도
- floor: integer
3 - humidity: double
64.5 - sensorReady: boolean
true - stationName: String
North Ridge
실행 예시
Floor: 3
Humidity: 64.5
Sensor Ready: true
Station: North Ridge
문제 5. 프로필 카드¶
이름, 나이, 키, 학생 여부를 변수에 저장한 뒤 한 줄에 하나씩 출력하는 프로그램을 작성하세요.
조건
- name:
Jisoo - age:
17 - height:
168.5 - student:
true
실행 예시
Name: Jisoo
Age: 17
Height: 168.5
Student: true
Unit 1.3 Expressions and Output¶
문제 1. 이스케이프 문자 출력¶
이스케이프 문자를 사용하여 다음 내용을 정확히 출력하는 프로그램을 작성하세요.
실행 예시
Path: C:\missions\alpha
Message: "Proceed"
Status:
READY
문제 2. 초를 분과 초로 바꾸기¶
int totalSeconds = 3672;를 선언한 뒤, /와 %를 사용하여 전체 분과 남은 초를 출력하세요.
실행 예시
Total seconds: 3672
Minutes: 61
Seconds: 12
문제 3. 숫자 코드 분석¶
int code = 583;을 선언하세요. 나눗셈과 나머지 연산을 사용하여 일의 자리 숫자와 십의 자리 숫자를 출력하세요.
실행 예시
Code: 583
Ones digit: 3
Tens digit: 8
문제 4. 세 점수의 평균¶
세 정수 점수 84, 91, 88을 변수에 저장하고 평균을 소수로 출력하세요. 정수 나눗셈으로 정보가 사라지지 않도록 식을 작성하세요.
실행 예시
Average: 87.66666666666667
문제 5. 영수증 계산¶
상품 가격 1200, 수량 3, 배송비 2500을 변수에 저장하세요. 총 결제 금액을 계산하여 출력하세요.
실행 예시
Item price: 1200
Quantity: 3
Shipping: 2500
Total: 6100
Unit 1.4 Assignment and Input¶
문제 1. 세 정수의 합¶
정수 3개를 입력받아 합을 출력하는 프로그램을 작성하세요.
실행 예시 1
First: 10
Second: 20
Third: 30
Sum: 60
실행 예시 2
First: 7
Second: 5
Third: 9
Sum: 21
문제 2. 두 값 바꾸기¶
정수 left와 right를 입력받은 뒤, 임시 변수를 사용하여 두 값을 바꾸고 출력하세요.
실행 예시
Left: 4
Right: 9
After swap
Left: 9
Right: 4
문제 3. 배송 예상 정보¶
목적지, 포장 개수, 예상 시간을 입력받아 라벨과 함께 출력하세요. 목적지는 한 단어라고 가정합니다.
실행 예시
Destination: Seoul
Packages: 6
Hours: 2.5
Delivery Summary
Destination: Seoul
Packages: 6
Estimated Hours: 2.5
문제 4. 온도 갱신¶
현재 온도와 증가량을 double로 입력받으세요. 기존 온도에 증가량을 더해 새 온도를 출력하세요.
실행 예시
Current temperature: 21.5
Increase: 3.0
Updated temperature: 24.5
문제 5. 점수 복사와 갱신¶
기본 점수와 보너스 점수를 입력받으세요. 기본 점수를 originalScore에 복사한 뒤, 점수에 보너스를 더하고 두 값을 모두 출력하세요.
실행 예시
Score: 80
Bonus: 7
Original score: 80
Updated score: 87
Unit 1.5 Casting and Ranges of Values¶
문제 1. 정수 평균을 실수로 구하기¶
정수 3개를 입력받아 평균을 double로 출력하세요. 3.0 리터럴 대신 형변환을 사용하세요.
실행 예시
Score 1: 10
Score 2: 11
Score 3: 12
Average: 11.0
문제 2. 양수 반올림¶
양수 double 값을 입력받아 가장 가까운 정수로 반올림하세요. (int)(value + 0.5) 패턴을 사용하세요.
실행 예시 1
Value: 12.6
Rounded: 13
실행 예시 2
Value: 12.2
Rounded: 12
문제 3. 몫을 소수로 보존하기¶
정수 total과 groups를 입력받아 total / groups의 결과를 소수로 출력하세요. 나눗셈 전에 한 값을 double로 형변환해야 합니다.
실행 예시
Total: 11
Groups: 4
Result: 2.75
문제 4. 센티미터를 미터로 바꾸기¶
센티미터 값을 정수로 입력받아 미터 값을 소수로 출력하세요. 예를 들어 175cm는 1.75m입니다.
실행 예시
Centimeters: 175
Meters: 1.75
문제 5. 정수 오버플로 확인¶
Integer.MAX_VALUE를 변수에 저장한 뒤, 그 값과 value + 1을 출력하는 프로그램을 작성하세요.
실행 예시
Max int: 2147483647
Max int plus one: -2147483648
Unit 1.6 Compound Assignment Operators¶
문제 1. 경기 점수 갱신¶
int score = 10;에서 시작하세요. 복합 대입 연산자를 사용하여 다음 순서대로 점수를 갱신하고 마지막 점수를 출력하세요.
5 더하기
2 곱하기
8 빼기
4로 나누기
3으로 나눈 나머지 저장
실행 예시
Final score: 2
문제 2. 배터리 계산¶
다음 초기값에서 시작하여 모든 갱신을 복합 대입, 증가, 감소 연산자로 작성하세요.
int charge = 81;
int cycles = 2;
갱신 순서
charge를 3으로 나누기
cycles를 1 증가시키기
charge에 cycles * 4 더하기
charge를 10으로 나눈 나머지로 바꾸기
cycles를 1 감소시키기
실행 예시
Charge: 9
Cycles: 2
문제 3. 걸음 수 조정¶
시작 걸음 수를 입력받으세요. ++, +=, --를 사용하여 걸음 수를 순서대로 1 증가, 500 증가, 1 감소시킨 뒤 출력하세요.
실행 예시
Steps: 1200
Final steps: 1700
문제 4. 사물함 번호¶
정수 번호를 입력받은 뒤, 복합 대입 연산자 %=를 사용하여 10으로 나눈 나머지를 출력하세요.
실행 예시
Locker number: 127
Last digit: 7
문제 5. 쇼핑 포인트¶
포인트 100에서 시작하세요. 복합 대입 연산자를 사용하여 구매 보너스 25를 더하고, 이벤트로 2배를 만든 뒤, 사용한 포인트 40을 빼세요.
실행 예시
Points: 210
Unit 1.7 APIs and Libraries¶
문제 1. Scanner API 사용하기¶
java.util.Scanner를 import하여 이름과 나이를 입력받고 출력하는 프로그램을 작성하세요. 이름은 한 단어라고 가정합니다.
실행 예시
Name: Hana
Age: 16
Hana is 16 years old.
문제 2. java.lang 클래스 사용하기¶
import 없이 사용할 수 있는 Integer와 System을 사용하여 Integer.MAX_VALUE와 Integer.MIN_VALUE를 출력하세요.
실행 예시
Max: 2147483647
Min: -2147483648
문제 3. Beacon API 호출 코드¶
다음 Beacon 클래스가 제공된다고 가정하고, main 메서드에서 객체를 만들고 API를 올바르게 호출하세요.
class Beacon {
private String id;
public Beacon(String id) {
this.id = id;
}
public void flash(int times) {
System.out.println(id + " flashes " + times + " times");
}
public String getId() {
return id;
}
public boolean isActive() {
return true;
}
}
작성할 동작
- ID가
A-17인Beacon객체를 만든다. - 3번 깜박이도록 호출한다.
- Print
idandactivestatus.
실행 예시
A-17 flashes 3 times
ID: A-17
Active: true
문제 4. Thermostat API 카드 구현하기¶
아래 API를 만족하는 Thermostat 클래스를 작성하고, main에서 객체를 사용하세요.
| API entry | 설명 |
|---|---|
Thermostat(double initialTemp) |
초기 온도로 객체 생성 |
void setTarget(double target) |
목표 온도 설정 |
double getTarget() |
목표 온도 반환 |
main에서는 초기 온도 20.0으로 객체를 만들고, 목표 온도를 23.5로 설정한 뒤 출력하세요.
실행 예시
Target: 23.5
문제 5. Dot Operator 읽고 사용하기¶
Scanner 객체를 사용하여 도시 이름을 입력받고, 입력받은 문자열을 System.out.println으로 출력하세요. dot operator가 최소 두 번 사용되어야 합니다.
실행 예시
City: Jeju
Selected city: Jeju
Unit 1.8 Documentation with Comments and Preconditions¶
문제 1. 켈빈 변환 메서드 문서화¶
public static double toKelvin(double celsius) 메서드를 작성하세요. 메서드 위에 Javadoc 주석으로 @param, @return, precondition, postcondition을 포함하세요.
조건
- Precondition:
celsius >= -273.15 - returnValue:
celsius + 273.15 main에서는25.0을 변수에 저장하고 메서드를 호출한다.
실행 예시
Celsius: 25.0
Kelvin: 298.15
문제 2. 센트 단위 잔액¶
잔액을 원 단위 double이 아니라 센트 단위 int로 저장하는 프로그램을 작성하세요. 왜 센트 단위를 사용하는지 설명하는 유용한 한 줄 주석을 포함하세요.
조건
- initialBalance:
1250cents - depositAmount:
375cents - 출력은 최종 센트 잔액
실행 예시
Balance in cents: 1625
문제 3. 하루 페이지 수 메서드¶
public static int pagesPerDay(int pages, int days) 메서드를 작성하세요. 메서드 위에 precondition과 postcondition을 주석으로 작성하고, 정수 나눗셈으로 하루 페이지 수를 반환하세요.
조건
- Precondition:
pages >= 0,days > 0 main에서pages = 125,days = 6으로 호출
실행 예시
Pages per day: 20
문제 4. 직사각형 넓이 계약¶
public static double rectangleArea(double width, double height) 메서드를 작성하세요. Javadoc에 두 매개변수, 반환값, precondition, postcondition을 포함하세요.
조건
- Precondition:
width >= 0,height >= 0 - returnValue:
width * height main에서는width = 4.0,height = 6.0으로 호출한다.
실행 예시
Area: 24.0
문제 5. 약한 주석 개선하기¶
아래 의도를 반영하여 직접 프로그램을 작성하세요. 코드에는 계산 이유를 설명하는 유용한 주석이 하나 이상 있어야 합니다.
의도
- 분 단위 입력값
137을 시간과 남은 분으로 바꾼다. hours와minutes를 출력한다.
실행 예시
Hours: 2
Minutes: 17
Unit 1.9 Method Signatures¶
문제 1. 구분선 메서드¶
매개변수와 반환값이 없는 public static void separator() 메서드를 작성하고 main에서 호출하세요.
실행 예시
Start
----------------
End
문제 2. 측정값 출력 메서드¶
public static void showReading(String label, double value) 메서드를 작성하세요. main에서 "Pressure"와 101.3을 인수로 전달하세요.
실행 예시
Pressure: 101.3
문제 3. 게이트 출력 메서드¶
public static void showGate(int gate) 메서드를 작성하고, main에서 14와 21을 각각 전달하여 두 번 호출하세요.
실행 예시
Gate 14
Gate 21
문제 4. 오버로딩된 display 메서드¶
같은 클래스 안에 다음 두 메서드를 작성하세요.
public static void display(int value)
public static void display(String value)
main에서 두 메서드를 각각 호출하세요.
실행 예시
Number: 7
Text: ready
문제 5. Call by Value 확인¶
public static void triple(int value) 메서드를 작성하세요. 메서드 안에서는 value를 3배로 바꾸고 출력합니다. main에서는 int count = 5;를 전달한 뒤, 호출 후의 count를 출력하세요.
실행 예시
Inside method: 15
After call: 5
Unit 1.10 Calling Class Methods¶
문제 1. 제곱 메서드¶
public static int square(int number) 메서드를 작성하세요. main에서 정수 하나를 입력받아 제곱을 출력하세요.
실행 예시
Number: 6
Square: 36
문제 2. 마지막 자리 메서드¶
public static int lastDigit(int number) 메서드를 작성하세요. 정수를 입력받아 마지막 자리 숫자를 출력하세요.
실행 예시
Number: 583
Last digit: 3
문제 3. void 메서드와 non-void 메서드¶
printBorder()는 구분선을 출력하는 void 메서드로, totalPrice(int price, int quantity)는 총액을 반환하는 int 메서드로 작성하세요.
main에서는 가격 1200, 수량 3으로 totalPrice를 호출하세요.
실행 예시
================
Total: 3600
================
문제 4. 반환값 이어서 사용하기¶
doubleToInt(int n)은 n * 2를 반환하고, lastDigit(int n)은 마지막 자리 숫자를 반환합니다. main에서 lastDigit(doubleToInt(48))의 결과를 출력하세요.
실행 예시
Final value: 6
문제 5. 다른 클래스의 class method 호출¶
TemperatureTools 클래스에 public static double toCelsius(double fahrenheit) 메서드를 작성하세요. Main 클래스의 main에서 TemperatureTools.toCelsius(77.0)을 호출해 결과를 출력하세요.
실행 예시
Celsius: 25.0
Unit 1.11 Using the Math Class¶
문제 1. 직각삼각형 빗변¶
두 변의 길이를 double로 입력받아 Math.pow와 Math.sqrt를 사용하여 빗변 길이를 출력하세요.
실행 예시
Width: 6.0
Height: 8.0
Diagonal: 10.0
문제 2. 절댓값 차이¶
두 정수를 입력받아 두 수의 차이의 절댓값을 출력하세요. Math.abs를 사용하세요.
실행 예시
First: 12
Second: 25
Difference: 13
문제 3. 주사위 숫자¶
Math.random()을 사용하여 1부터 6까지의 정수 중 하나를 출력하는 프로그램을 작성하세요.
출력 예시
Die: 4
문제 4. 사물함 무작위 배정¶
Math.random()을 사용하여 12부터 20까지의 정수 중 하나를 출력하세요.
출력 예시
Locker: 17
문제 5. 원점에서의 거리¶
점 (x, y)를 double로 입력받아 원점 (0, 0)에서의 거리를 출력하세요. Math.pow와 Math.sqrt를 사용하세요.
실행 예시
X: 3.0
Y: 4.0
Distance: 5.0
Unit 1.12 Objects — Instances of Classes¶
문제 1. SmartLocker 객체 만들기¶
SmartLocker 클래스를 만들고 다음 속성을 public 인스턴스 변수로 선언하세요.
String id;
int capacity;
boolean available;
main에서 서로 다른 두 사물함 객체를 만들고 각 객체의 상태를 출력하세요.
실행 예시
L1 capacity: 3
L1 available: true
L2 capacity: 5
L2 available: false
문제 2. Robot 객체 상태¶
Robot 클래스에 String name, int battery, String location 속성을 선언하세요. main에서 두 Robot 객체를 만들고 서로 다른 상태를 저장한 뒤 출력하세요.
실행 예시
Atlas battery: 80
Atlas location: Lab
Nova battery: 55
Nova location: Hall
문제 3. 참조 복사 확인¶
String alpha = "ready";, String beta = alpha;, String gamma = null;을 선언한 뒤 gamma = beta;를 실행하세요. 세 변수를 모두 출력하는 프로그램을 작성하세요.
실행 예시
alpha: ready
beta: ready
gamma: ready
문제 4. Device 클래스 모델링¶
Device 클래스에 String model, boolean powered, int battery 속성을 선언하세요. main에서 객체 하나를 만들고 속성을 채운 뒤 출력하세요.
실행 예시
Model: Tab-9
Powered: true
Battery: 73
문제 5. 간단한 클래스 계층¶
Vehicle 클래스에 String brand 속성을 선언하고, Bus 클래스가 Vehicle을 상속하도록 작성하세요. Bus에는 int seats 속성을 추가하세요. main에서 Bus 객체를 만들어 값을 출력하세요.
실행 예시
Brand: CityLine
Seats: 45
Unit 1.13 Creating and Initializing Objects — Constructors¶
문제 1. Badge 생성자¶
Badge 클래스를 작성하세요. String label 속성과 Badge(String initialLabel) 생성자를 포함해야 합니다. main에서 new Badge("Visitor")로 객체를 만들고 label을 출력하세요.
실행 예시
Badge: Visitor
문제 2. Reservation 생성자¶
Reservation 클래스에 String name, int guests 속성과 Reservation(String initialName, int initialGuests) 생성자를 작성하세요.
실행 예시
Name: Kim
Guests: 4
문제 3. Parcel 오버로드 생성자¶
Parcel 클래스에 다음 생성자 3개를 작성하세요.
Parcel()
Parcel(String trackingId)
Parcel(String destination, double mass, String trackingId)
main에서 세 생성자를 모두 사용해 객체를 만들고 각 tracking ID를 출력하세요. 기본 tracking ID는 NONE으로 정하세요.
실행 예시
P1: NONE
P2: T-100
P3: T-300
문제 4. Sensor 생성자 선택¶
Sensor 클래스에 다음 두 생성자를 작성하세요.
Sensor()
Sensor(String id, double offset)
main에서 두 생성자를 각각 호출하여 객체를 만들고 상태를 출력하세요. 기본 ID는 UNKNOWN, 기본 offset은 0.0으로 정하세요.
실행 예시
S1: UNKNOWN, 0.0
S2: A7, 0.25
문제 5. 생성 흐름 확인¶
Ticket 클래스의 생성자 안에서 "Constructing ticket"을 출력하고, main에서는 생성 전후로 "Before"와 "After"를 출력하세요.
실행 예시
Before
Constructing ticket
After
Unit 1.14 Calling Instance Methods¶
문제 1. Counter 인스턴스 메서드¶
Counter 클래스에 int value 속성, void increment(), int getValue() 인스턴스 메서드를 작성하세요. main에서 객체를 만들고 increment()를 두 번 호출한 뒤 값을 출력하세요.
실행 예시
Value: 2
문제 2. Drone API 구현과 호출¶
Drone 클래스에 int distance, double battery 속성을 두세요. move(int meters)는 distance를 증가시키고 battery를 meters * 0.5만큼 줄입니다. getBatteryLevel()은 battery를 반환합니다.
조건
- initialBattery:
100.0 main에서 50m 이동 후 배터리를 출력
실행 예시
Battery: 75.0
문제 3. MessageBox 상태 변경¶
MessageBox 클래스에 String message 속성, void setMessage(String newMessage), String getMessage()를 작성하세요.
실행 예시
Message: Ready
Message: Complete
문제 4. BankAccount 입금 메서드¶
BankAccount 클래스에 int balance 속성, void deposit(int amount), int getBalance()를 작성하세요. main에서 500과 250을 입금하고 잔액을 출력하세요.
실행 예시
Balance: 750
문제 5. null 참조 피하기¶
String status = null;로 시작하되, length()를 호출하기 전에 "READY"를 대입하세요. 문자열 길이를 출력하는 프로그램을 작성하세요.
실행 예시
Length: 5
Unit 1.15 Strings¶
문제 1. 자산 코드 분리¶
자산 코드가 ZONE-ITEM 형식으로 입력됩니다. indexOf, substring, length를 사용하여 zone과 item을 분리해 출력하세요. zone 길이는 고정되어 있지 않습니다.
실행 예시
Code: WEST-4821
Zone: WEST
Item: 4821
문제 2. 파일 확장자 바꾸기¶
String label = "file.tmp";에서 시작하세요. indexOf와 substring을 사용하여 "file.csv"를 만들어 label에 다시 저장하고 출력하세요.
실행 예시
Updated: file.csv
문제 3. 첫 글자와 마지막 글자¶
한 단어를 입력받아 첫 글자와 마지막 글자를 각각 한 글자짜리 문자열로 출력하세요. substring과 length()를 사용하세요.
실행 예시
Word: COMPUTE
First: C
Last: E
문제 4. 문자열 내용 비교¶
비밀번호와 확인 문자열을 입력받아 두 문자열의 내용이 같은지 출력하세요. ==가 아니라 equals를 사용해야 합니다.
실행 예시 1
Password: ready
Confirm: ready
Same: true
실행 예시 2
Password: ready
Confirm: Ready
Same: false
문제 5. 사전순 비교¶
두 단어를 입력받아 첫 번째 단어가 두 번째 단어보다 사전순으로 앞서는지 출력하세요. compareTo의 결과가 음수인지 검사하세요.
실행 예시
First word: apple
Second word: banana
First comes before second: true