본문 바로가기

Java/Java 알고리즘 SWEA

[SW 아카데미] 1284. 수도 요금 경쟁

반응형

 

https://swexpertacademy.com/main/code/problem/problemDetail.do?problemLevel=2&contestProbId=AV189xUaI8UCFAZN&categoryId=AV189xUaI8UCFAZN&categoryType=CODE&problemTitle=&orderBy=RECOMMEND_COUNT&selectCodeLang=ALL&select-1=2&pageSize=30&pageIndex=1 

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

1. A수도 회사, B수도 회사 클래스 작성

2. 각각의 클래스에 해당하는 수도요금 메서드 작성

3. 수도요금 비교해 적은 수도요금 선택해 출력

 

/////////////////////////////////////////////////////////////////////////////////////////////
// 기본 제공코드는 임의 수정해도 관계 없습니다. 단, 입출력 포맷 주의
// 아래 표준 입출력 예제 필요시 참고하세요.
// 표준 입력 예제
// int a;
// double b;
// char g;
// String var;
// long AB;
// a = sc.nextInt();                           // int 변수 1개 입력받는 예제
// b = sc.nextDouble();                        // double 변수 1개 입력받는 예제
// g = sc.nextByte();                          // char 변수 1개 입력받는 예제
// var = sc.next();                            // 문자열 1개 입력받는 예제
// AB = sc.nextLong();                         // long 변수 1개 입력받는 예제
/////////////////////////////////////////////////////////////////////////////////////////////
// 표준 출력 예제
// int a = 0;
// double b = 1.0;
// char g = 'b';
// String var = "ABCDEFG";
// long AB = 12345678901234567L;
//System.out.println(a);                       // int 변수 1개 출력하는 예제
//System.out.println(b); 		       						 // double 변수 1개 출력하는 예제
//System.out.println(g);		       						 // char 변수 1개 출력하는 예제
//System.out.println(var);		       				   // 문자열 1개 출력하는 예제
//System.out.println(AB);		       				     // long 변수 1개 출력하는 예제
/////////////////////////////////////////////////////////////////////////////////////////////
import java.util.Scanner;
import java.io.FileInputStream;

/*
   사용하는 클래스명이 Solution 이어야 하므로, 가급적 Solution.java 를 사용할 것을 권장합니다.
   이러한 상황에서도 동일하게 java Solution 명령으로 프로그램을 수행해볼 수 있습니다.
 */
class A{
    public int P,W;
    A(int P, int W){
        this.P=P;
        this.W=W;
    }

    public int getTotal() {
        //System.out.println("수도양: "+W+"리터당요금: "+P);
        return W*P;
    }
}
class B{
    public int Q, R, S, W;


    B(int Q, int R, int S, int W){
        this.Q=Q;
        this.R=R;
        this.S=S;
        this.W=W;
    }

    public int getTotal() {
        //System.out.println("수도양: "+W+"리터당요금: "+S);

        if(W<R) return Q;
        else{
            return Q+(W-R)*S;
        }
    }
}
class Solution
{
    public static void main(String args[]) throws Exception
    {
		/*
		   아래의 메소드 호출은 앞으로 표준 입력(키보드) 대신 input.txt 파일로부터 읽어오겠다는 의미의 코드입니다.
		   여러분이 작성한 코드를 테스트 할 때, 편의를 위해서 input.txt에 입력을 저장한 후,
		   이 코드를 프로그램의 처음 부분에 추가하면 이후 입력을 수행할 때 표준 입력 대신 파일로부터 입력을 받아올 수 있습니다.
		   따라서 테스트를 수행할 때에는 아래 주석을 지우고 이 메소드를 사용하셔도 좋습니다.
		   단, 채점을 위해 코드를 제출하실 때에는 반드시 이 메소드를 지우거나 주석 처리 하셔야 합니다.
		 */
        //System.setIn(new FileInputStream("src/sw1284/input.txt"));

		/*
		   표준입력 System.in 으로부터 스캐너를 만들어 데이터를 읽어옵니다.
		 */
        Scanner sc = new Scanner(System.in);
        int T;
        T=sc.nextInt();
		/*
		   여러 개의 테스트 케이스가 주어지므로, 각각을 처리합니다.
		*/

        for(int test_case = 1; test_case <= T; test_case++)
        {

            //A: 1리터당 P원
            //B: 기본요금 Q원 + R리터 이하면 기본요금, R리터 이상이면 S원
            //W: 사용한 수도양

            int P=sc.nextInt();
            int Q=sc.nextInt();
            int R=sc.nextInt();
            int S=sc.nextInt();
            int W=sc.nextInt();

            A a =new A(P, W);
            B b =new B(Q, R, S, W);
            int answer=0;
            if(a.getTotal()<b.getTotal()) answer=a.getTotal();
            else answer=b.getTotal();

            System.out.println("#"+test_case+" "+answer);

        }
    }
}
반응형