항해99 7기/TIL(Today I Learned)
항해99 7기 11일차 TIL[알고리즘 테스트, 객체지향 과제]
고을마을
2022. 5. 19. 22:23
어제는 TIL을 작성하지 못한 정도로 멘붕에 빠졌다.
과제에 대한 기술매니저님의 조언은 나의 머리를 멍하게 만들었으며.
새벽까지 머리를 쥐어짜내면서 알고리즘 테스트에 대비한 나머지 TIL을 쓸 여력조차 남아있지 않았기 때문이다.ㅠㅠ
2022년 5월 19일 항해 11일차.
오늘은 알고리즘 테스트와 객체지향 과제 제출이 있는 날이었다.
알고리즘 테스트는
각각의 이중배열들을 true일때는 합하고. false일때는 음수화 하는 것이었다.
두개의 for문과 if 조건문을 통해서 리턴해주면 되는 문제.
3개의 문제 중에서 1개만 풀면 되는 문제였지만 이 문제 빼고는 나머지 2개는 손도 못대볼 정도로 어려웠다;;;
컴퓨터적 사고가 아직은 익숙치 않아 걱정이 크다...
자바 객체지향 과제를 제출했다.
9일차의 코드와 비교해보면 조금 달라졌다.
abstract class Car {
abstract void lowSpeed(int low);
abstract void highSpeed(int high);
abstract void fuel();
abstract void turnOnOff();
}
public class Bus extends Car{
int id;
int maxCustomers;
int currentCustomers;
int fee;
int oil;
int currentSpeed;
boolean status;
public Bus(int id, int oil, int currentSpeed) {
this.id = (int)(Math.random()*30)+1;
this.maxCustomers = 30;
this.currentCustomers = 0;
this.fee = 0;
this.oil = oil;
this.currentSpeed = currentSpeed;
this.status = false;
}
@Override
public void turnOnOff(){
if(status) {
status = false;
System.out.println("시동끕니다.");
}else{
status = true;
System.out.println("시동겁니다.");
}
}
@Override
public void fuel(){
System.out.println("현재 주유량은 "+this.oil+"L입니다.");
if(this.oil==0) {
System.out.println("차고지행");
turnOnOff();
}else if(this.oil<10) {
System.out.println("주유가 필요합니다.");
}else if(this.oil>=10){
System.out.println("현재 주유량은 운행에 지장없습니다.");
}
}
public void passenger(int currentCustomers){
if(currentCustomers<=30){
System.out.println("현재 탑승 인원 "+currentCustomers+"명. 운행 가능합니다.");
}else {
System.out.println("탑승인원 30명 초과 운행할 수 없습니다.");
}
}
@Override
public void lowSpeed(int low){
System.out.println("현재 속도- "+this.currentSpeed+"km/h.");
this.currentSpeed = currentSpeed-low;
System.out.println("기존 속도 대비 " +low+ "km/h 줄여 " +this.currentSpeed+ "km/h로 운행합니다.");
}
@Override
public void highSpeed(int high){
System.out.println("현재 속도- "+this.currentSpeed+"km/h.");
this.currentSpeed = currentSpeed+high;
System.out.println("기존 속도 대비 " +high+ "km/h 높여 " +this.currentSpeed+ "km/h로 운행합니다.");
}
}
public class Taxi extends Car {
int id;
int oil;
int currentSpeed;
int destination;
int distance;
int fee;
int extraFee;
boolean status;
boolean passenger;
public Taxi(int id, int oil, int currentSpeed) {
this.id = (int)(Math.random()*30)+1;
this.oil = oil;
this.currentSpeed = currentSpeed;
this.destination = 0;
this.distance = 0;
this.fee = 0;
this.extraFee = 0;
this.status = false;
this.passenger = false;
}
public void manInOut(){
if(passenger){
turnOnOff();
}else{
System.out.println("승객이 탑승했습니다.");
turnOnOff();
}
}
@Override
public void turnOnOff(){
if(status) {
status = false;
System.out.println("택시상태 : 이동중. 승객 추가 탑승불가");
}else{
status = true;
System.out.println("택시상태 : 일반");
}
}
@Override
public void fuel(){
System.out.println("현재 주유량은 "+this.oil+"L입니다.");
if(this.oil<=10) {
System.out.println("주유가 필요합니다.");
}else{
System.out.println("현재 주유량은 운행에 지장없습니다.");
}
}
@Override
public void lowSpeed(int low){
System.out.println("현재 속도- "+this.currentSpeed+"km/h.");
this.currentSpeed = currentSpeed-low;
System.out.println("기존 속도 대비 " +low+ "km/h 줄여 " +this.currentSpeed+ "km/h로 운행합니다.");
}
@Override
public void highSpeed(int high){
System.out.println("현재 속도- "+this.currentSpeed+"km/h.");
this.currentSpeed = currentSpeed+high;
System.out.println("기존 속도 대비 " +high+ "km/h 높여 " +this.currentSpeed+ "km/h로 운행합니다.");
}
public void pay(int fee, int destination, int distance, int extraFee){
System.out.println("목적지에 도착했습니다.");
if(destination<=distance){
System.out.println("요금은 "+fee+"원 입니다.");
System.out.println("승객 내립니다.");
}else{
fee+=extraFee*(destination-distance);
System.out.println("요금은 "+fee+"원 입니다.");
System.out.println("승객 내립니다.");
}
}
}
import java.util.Random;
public class Main {
public static void main(String[] args) {
Random random = new Random();
Bus bus1 = new Bus(random.nextInt(31),11,70);
int busid = bus1.id;
System.out.println("----------------------------------------");
System.out.println("해당 버스는 "+busid+"번 입니다.");
bus1.turnOnOff();
bus1.fuel();
if(bus1.oil<10){
return;
}
bus1.passenger(30);
bus1.lowSpeed(50);
bus1.highSpeed(50);
bus1.turnOnOff();
System.out.println("----------------------------------------");
Taxi taxi1 = new Taxi(random.nextInt(31),11,50);
int taxiid = taxi1.id;
System.out.println("해당 택시는 "+taxiid+"번 입니다.");
taxi1.turnOnOff();
taxi1.manInOut();
taxi1.fuel();
if(taxi1.oil<10){
return;
}
taxi1.lowSpeed(20);
taxi1.highSpeed(70);
taxi1.pay(3000,25,10,150);
taxi1.turnOnOff();
System.out.println("----------------------------------------");
}
}
9일차와 비교해보면 Car라는 추상클래스를 두고 Bus, Taxi에 상속시켜줬다는 점이 달라졌다.
또한 메인클래스에서 Bus, Taxi 객체를 불러오고 최대한 함수만으로 불러와서 실행시켜줬다. (지금 내 자바 능력을 쥐어 짜내서...;;;)
사실 이게 맞는 답인지도 잘 모르겠다. 일단 스스로 고민해가면서 코드를 짜봤다.
과제 제출했으니 답변을 주겠지...
이번 주차에서 나의 자바 코딩 실력을 여실히 알게됐다.
내일부터 본격적으로 주특기 언어 주차.
이겨내자. 할수있다. 많은 것을 얻어갈수 있도록 최선을 다해보겠다.