백수상태가 길어지면서 자금이 후달리기 시작했고 방구석에 박혀서 자주 사용안하게 된 물건들을 하나 둘 파는중이다..

정든 내 갤럭시북 이온아 잘가... 구매하자마자 램 추가하고 써멀도 고급진걸로 발라줬었는데 흑흑

 

암튼 원래는 시동디스크를 만들어다가 윈도우를 다시 설치하려 했다. 그러다 문득 맥처럼 초기화 하는방법이 있지않을까해서 찾다가 방법이 있길래 포스팅한다. 마지막 이온의 흔적

 

1. 윈도우(시작버튼) - 설정 - 시스템 - 복구

2. PC 초기화

3. 본인의 필요에 따라 선택

나는 판매할 예정이라 모든 항목 제거를 눌러주었다.

굳이 귀찮게 시동디스크 안 만들어도 클라우드 다운로드로 설치할 수 있어서 편한것같다.

(사실 윈11 부팅디스크 usb가 있긴한데...) 그냥 한번 안써본 방법으로 해보고 싶어졌다.

 

클라우드 다운로드를 눌러주면

이젠 진짜 끝... 잘가렴..

요즘 여기저기 입사지원을 하고는 있지만 보통 서류전형에서 떨어지는 경우가 많다...

NC 같은 경우 3문제를 전부 풀어서 좀 기대하고 있었으나 시간복잡도 문제인지 아니면 서류 점수가 부족해서인지 여기도 결국 면접기회도 오지 않았다.

(사실 서류 점수 탓이 제일 클 것 같다. 서류 점수로 미리 걸러서 시험안봐도 되게 하지 괜히 사람 기대하게 만들어 ㅜ)

 

사실 객관적으로 봤을 때 실력이야 직접 일하기 전엔 알 수 없으니 젖히고 서류만 보면 좀 뽑기 망설여질 것 같은 스펙이긴해서 아쉬운대로 자격증이라도 좀 추가해보려고 시험을 보게 되었다.

(이래서 SAFFY를 가고 싶었는데 이미 지나간일이라..)

 

https://jdevnote.tistory.com/6

 

2022 다우기술 하반기 신입(개발/엔지니어) 기술력진단 및 인·적성검사 후기

서류전형 합격 최근 연이은 서류전형 탈락으로 크게 기대는 안 하고 있었지만 정말 감사하게도 서류전형을 통과했다는 메일을 받았다. 안내받은 메일 내용은 COS Pro를 통해 코딩테스트(기술력

jdevnote.tistory.com

이때 봤던 1급을 볼까 했으나 2급이 응시료가 만원이 저렴하기도 하고(퇴사한 지 시간이 좀 지나다 보니 생활고에 시달리는 중이다) 약간 쫄...아서 그냥 2급으로 보게 됐다.

 

이전에 40분도 안 걸려서 도착했던 시험장이라 넉넉하게 60분 전에 출발했는데

가는 날이 장날이라고 하필 시위가 겹쳤다. 도로가 꽉 막혀 있어서 이대론 응시료만 날리게 생겨서 급하게 용산역으로 뛰어가서 지하철로 갈아탔고, 이후 내려서 시험장까지 전력 질주한 결과 1분 전에 시험장에 아슬하게 도착했다.

 

빈칸 채워넣기에 .length() 를 써서 함수를 완성 시켜야 했는데 자꾸 컴파일에러가 나서 어차피 10문제 중 9문제를 풀었던 상황이라 합격선이기도 하고 뛰어서 힘들었던지라 얼른 쉬고 싶어서 그냥 한 문제는 덜 푼 상태로 제출했다.

제출하면 이렇게 바로 결과가 나오고 시간이 다 끝나기 전에 퇴실할 수 있다. 대충 900점 +-20 근처일 줄 알았는데 생각보다 점수가 낮게 나와서 좀 당황스럽긴 했다.

 

시험을 보고 나서 든 생각은 만원이 더 들더라도 '그냥 1급으로 딸걸...' 이었다.

난이도는 프로그래머스 2레벨 중 쉬운 문제를 풀 정도의 실력이면 무난하게 붙을 것 같다. (1.5정도?)

 

문자열 자르기가 파이썬이 편해서 파이썬으로 좀 코테 연습을 좀 해볼까 하다가 자바가 익숙해서 자바로만 쭉 해오고 있는데 나중에 혹시라도 코테언어를 파이썬으로 갈아타게 되면 그때 1급으로 다시 취득해볼까 싶긴 하다.

 

국비 지원 교육과정을 수료하면서 취득했던 정보처리기사 필기는 회사에 다니면서는 현실에 안주하여 실기 취득을 못 하고 기간이 만료되어버렸다. (귀찮아도 퇴근하고 회사업무 관련 공부만 할 게 아니라 자기 계발도 좀만 더 열심히 할걸그랬다.)

 

아무튼 정보처리기사랑, SQL-D 정도를 추가로 취득하려고 생각 중이다. 그 외에는 사이드 프로젝트라도 진행해서 깃허브도 개설해야 하나 싶은데 이건 좀 더 고민해봐야 할 것같다.

 

현재 그동안 체중이 너무 불어나서 (키 180) 생에 첫 3자리를 찍어봤는데 현재 10킬로를 감량한 상태고 당분간은 체중 조절 위주로 생활할 예정이다. 20정도 더 빼고 싶은데 정체기여서 슬슬 식단도 같이 해야 할 것 같다.

요즈음 매일 1곳 정돈 이력서를 지원하며 지내다가 난생처음 장염에 걸려서 1주일을 넘게 앓아누웠다.
스트레스 탓인지, 아니면 뭘 잘못 먹었는데 나이가 들어서 몸에서 바로 반응이 온 건지는 모르겠으나 진짜 죽는 줄 알았다.
이제는 어느 정도 회복되어 다시 이력서를 조금씩 작성하기 시작하면서 SSAFY 9기 모집 광고를 보게 되었다.

좀 쉬어갈 겸(사실 지금도 공부 내용은 포스팅을 안하고있지만..) 기억 속에서 SSAFY 면접 내용이 완전히 사라지기 전에 글로 남겨볼까 해서 글을 작성한다.

사실 나는 SAFFY에 총 3번을 지원했고 면접까지 간 건 한 번밖에 안되긴 한다.
3기, 7기, 8기에 지원했으며 3기는 대학 졸업 후 지원했고 7, 8기는 퇴사 후 지원했다.
3기에 처음 지원하여 서류 광탈 후 서울로 올라와 국비 지원교육을 듣고 회사에 다니게 되었다.

이후 1년이 넘도록 실제 서비스로 이루어진 프로젝트도 없다 보니 성취감도 느끼지 못하고 있었고 내가 생각하던 개발자와는 거리가 너무 멀어져 있어 늘 이직에 대해 고민을 하게 되었다.

 

결정적으로 부서장의 사실상 부서 정리나 다름없는 결정으로 인해 사측에 퇴사 의사를 밝히게 되었고, 이때 클라우드 부서에서 일해보지 않겠냐는 제안을 받았다. 이쪽의 부서장분은 현업 개발자로 일한 적은 없어도 전공이 컴퓨터공학 쪽이셔서 개발자에 대한 이해가 있으신 분이셨으나 마찬가지로 신설 부서였단 점이 마음에 걸려 거절하고 그렇게 나는 준비도 되지 않은 채 퇴사하게 되었다.

퇴사 후엔 마침 시기가 맞아떨어져 입사 전부터 가고 싶었던 SAFFY 7기에 지원하게 되었고 이때 면접까지 가게 되었다.

보안서약서를 작성했기에 자세하겐 말할 수 없으나 밖에 알려진 내용대로 간단히 설명하자면 면접을 보러 가면 간이 검증 CBT를 한 번 보고, 트렌드와 관련된 주제의 질문을 받아 그에 대한 내용으로 PT 형태, 그리고 자소서에 관한 질문들로 면접을 보게 된다.

돌이켜보면 이때 면접을 못 봐도 너무 못 봤었다. 현업에서 일했었는데 바로 취업하면 좋지 않겠느냐는 질문을 받았다.
지금 생각하면 어떤 쪽으로 일을 해나가고 싶고 해당 일을 하기 위해선 어떤 식으로 커리어 개발을 해야 하는데 ~한 부분에서 SAFFY가 도움이 많이 될 것 같다 라는 식으로 답했을 것 같다. 하지만 당시 자신감이 바닥나있던 상태라 단순히 제가 부족해서 실력적으로 보완하고 싶다 말하였고 그렇게 나는 떨어졌다.

당시엔 기술 기반 질문들은 그런대로 답하였기에 자소서 기반 질문을 망친 건 생각지도 않고 근자감에 차 있다가 떨어졌단 충격과 그동안의 번아웃으로 인해 바로 구직활동을 시작하지 않고 휴식 기간을 가졌다. (주로 게임을 하며..)

 

이후 마지막으로(나이제한) SAFFY 8기에 지원했다. 이때는 면접까지 가진 못했고, 삼성에 다니는 주변지인에 의하면 95년생을 위주로 뽑았단 말을 들었다. 아쉽긴 하지만 이미 맘을 다 비우고 지원했어서 그런지 별 감흥은 없었고 그렇게 현재 취준중이다.

 

불합격한 사람의 말이 신빙성이 있을진 모르겠으나..

사설이 길었지만 요약하면 최신 트렌드와 관련한 기술에 대해 깊이 이해하고 있어 남들에게 설명할 수 있을정도, 자소서 기반으로 꼬리를 무는 질문에 대한 답이 가능하면 충분히 좋은 결과를  받을 수 있을것같다.

 

 

 

 

문제 설명

자연수가 들어있는 배열에서 숫자 K개를 선택하려 합니다. 이때, 선택한 숫자 중 가장 큰 수와 가장 작은 수의 차이가 최소가 되도록 해야합니다.

예를 들어 배열에 들어있는 숫자가 [9, 11, 9, 6, 4, 19] 이고, K = 4 라면

  • 숫자 4개를 [9, 11, 9, 6]로 뽑으면 (가장 큰 수 - 가장 작은 수) = (11 - 6) = 5가 됩니다.
  • [9, 9, 6, 4] 와 같이 숫자를 뽑아도 (가장 큰 수 - 가장 작은 수) = (9 - 4) = 5가 됩니다.

그러나 가장 큰 수와 가장 작은 수의 차이가 5보다 작아지도록 숫자 4개를 선택하는 방법은 없습니다.

자연수가 들어있는 배열 arr, 선택해야 하는 숫자 개수 K가 매개변수로 주어질 때, 선택한 숫자중 가장 큰 수와 가장 작은 수의 차이가 최소가 되록 arr에서 숫자 K개를 선택했을 때, 그때의 가장 큰 수와 가장 작은 수의 차이를 return 하도록 solution 메소드를 완성해주세요.

매개변수 설명

자연수가 들어있는 배열 arr, 선택해야 하는 숫자 개수 K가 solution 메소드의 매개변수로 주어집니다.

  • arr 배열의 길이는 5 이상 1,000 이하입니다.
  • arr의 원소는 1 이상 10,000 이하인 자연수입니다.
  • K 는 4 이상 50 이하인 자연수입니다.

return 값 설명

선택한 숫자중 가장 큰 수와 가장 작은 수의 차이가 최소가 되도록 arr에서 숫자 K개를 선택했을 때, 그때의 가장 큰 수와 가장 작은 수의 차이를 return 해주세요.

 

예제

arr K return
[9, 11, 9, 6, 4, 19] 4 5

예제 설명

예제 #1
문제의 예제와 같습니다.

 

문제 풀이

1. 입력받은 배열을 정렬한다.

2. 정렬된 배열에서 K개씩 뽑아서 가장 큰 수 - 작은 수의 차이를

3. 현재 answer와 비교해서 작은 수를 answer에 담아준다.

4. 이를 for 문을 통해 계속 비교해준다.

 

// 다음과 같이 import를 사용할 수 있습니다.
import java.util.*;

class Solution {
    public int solution(int[] arr, int K) {
        // 여기에 코드를 작성해주세요.
        Arrays.sort(arr);
        int answer = arr[arr.length-1];
        for(int i = 0 ; i < arr.length-K+1 ; i++){
            answer = Math.min(answer,arr[i+K-1]-arr[i]);
        }
        return answer;
    }

    // 아래는 테스트케이스 출력을 해보기 위한 main 메소드입니다.
    public static void main(String[] args) {
        Solution sol = new Solution();
        int[] arr = {9, 11, 9, 6, 4, 19};
        int K = 4;
        int ret = sol.solution(arr, K);

        // [실행] 버튼을 누르면 출력 값을 볼 수 있습니다.
        System.out.println("solution 메소드의 반환 값은 " + ret + "입니다.");
    }
}

문제 설명

1부터 n까지 숫자가 적힌 카드 뭉치를 다음 규칙에 따라 카드 뭉치를 섞었을 때, 아래에서부터 k번째에 있는 카드에 적힌 숫자를 알아내려합니다. 카드 뭉치 가장 아래에는 1이 쓰여있으며, 위로 갈수록 숫자가 커집니다. 카드 뭉치를 섞는 규칙은 다음과 같습니다.

1. 카드 뭉치를 정확히 반으로 나눕니다.
2. 두 개로 나뉜 카드 뭉치를 교차로 섞어서 카드 뭉치 하나를 만듭니다. 이때, 항상 1이 적힌 카드가 있는 뭉치를 아래로 놓고 섞습니다.
3. 위 과정을 반복합니다.

예를 들어, 1부터 6까지 숫자가 적힌 카드 뭉치를 3번 섞는다면 과정별로 아래에서부터 적힌 숫자는 다음과 같습니다.

횟수 카드 뭉치
1 [1, 4, 2, 5, 3, 6]
2 [1, 5, 4, 3, 2, 6]
3 [1, 3, 5, 2, 4, 6]

이때, 아래에서 3번째에 있는 카드에 적힌 숫자는 5입니다.

 

처음에 가장 위에 있는 카드에 적힌 숫자 n, 섞는 횟수 mix, 알고 싶은 카드의 위치 k가 매개변수로 주어질 때, 아래에서부터 k번째에 있는 카드에 적힌 숫자를 return 하도록 solution 메소드를 작성했습니다. 그러나, 코드 일부분이 잘못되어있기 때문에, 몇몇 입력에 대해서는 올바르게 동작하지 않습니다. 주어진 코드에서 한 줄만 변경해서 모든 입력에 대해 올바르게 동작하도록 수정하세요.

 

매개변수 설명

처음에 가장 위에 있는 카드에 적힌 숫자 n, 섞는 횟수 mix, 알고 싶은 카드의 위치 k가 solution 메소드의 매개변수로 주어집니다.

  • n은 10 이상 50 이하인 짝수입니다.
  • 카드는 0회 이상 10회 이하로 섞습니다.
  • k는 1 이상 n 이하인 자연수입니다.

return 값 설명

아래에서 k번째에 있는 카드에 적힌 숫자를 return 해주세요.

 

예제

n mix k return
6 3 3 5

예제 설명

문제에 나온 예와 같습니다.

 

소스 코드

문제 풀이

소스 코드의 흐름을 살펴보면 카드 셔플을 위해 반씩 나누어 담기위한 배열로 cardA, cardB를 n의 절반 값으로 선언해주었다. 이후 짝수 홀수에 따라 번갈아가며 cardA와 cardB에 담고 이를 card에 담아주는 과정인데 cardA와 cardB에 담아주는 과정에서 cardB의 index에 오류가 있다. 이를 고쳐주면 된다.

class Solution {
    public int solution(int n, int mix, int k) {
        int answer = 0;

        int[] card = new int[n];
        for(int i = 0; i < n; i++)
            card[i] = i+1;

        while((mix--) != 0) {
            int[] cardA = new int[n/2];
            int[] cardB = new int[n/2];

            for(int i = 0; i < n; i++) {
                if(i < n/2)
                    cardA[i] = card[i];
                else
                    cardB[i-(n/2)] = card[i];
            }

            for(int i = 0; i < n; i++) {
                if(i % 2 == 0)
                    card[i] = cardA[i/2];
                else
                    card[i] = cardB[i/2];
            }
        }

        answer = card[k-1];

        return answer;
    }

문제 설명

A 게임은 4x4 격자 모양의 보드의 가장 왼쪽 위에서 가장 오른쪽 아래로 말을 이동시키면서 각 구역에 있는 코인을 획득하는 게임입니다. 이때, 말은 오른쪽 또는 아래쪽으로만 이동할 수 있습니다.

예를 들어, 보드가 아래와 같다면

아래의 경우가 코인을 최대로 획득할 수 있는 경우이고 이때 획득하는 코인은 38입니다.

각 구역에서 획득할 수 있는 코인 양을 담은 2차원 배열 board가 매개변수로 주어질 때, 최대로 획득할 수 있는 코인의 양을 return 하도록 solution 메소드를 작성했습니다. 그러나, 코드 일부분이 잘못되어있기 때문에, 몇몇 입력에 대해서는 올바르게 동작하지 않습니다. 주어진 코드에서 한 줄만 변경해서 모든 입력에 대해 올바르게 동작하도록 수정하세요.

매개변수 설명

각 구역에서 획득할 수 있는 코인 양을 담은 2차원 배열 board가 solution 메소드의 매개변수로 주어집니다.

  • board는 4x4 크기인 2차원 배열입니다.
  • 각 구역에서 획득할 수 있는 코인의 양은 1 이상 9 이하인 자연수입니다.

return 값 설명

최대로 획득할 수 있는 코인의 양을 return 합니다.

 

예제

board return
[[6, 7, 1, 2], [3, 5, 3, 9], [6, 4, 5, 2], [7, 3, 2, 6]] 38

예제 설명

문제에 나온 예와 같습니다.

 

소스 코드

문제 풀이

 

우선 소스 코드를 살펴보면 coin이라는 list를 새로 만들어서 진행하는 방식으로 되어있다. 처음 시작 값을 담기위해 i=0, j=0을 주었고 그 외엔 오른쪽 혹은 아래로 이동하며 전부 탐색하는 형태이다.

마지막 else에서 왼쪽 칸과 위쪽 칸 중에서 큰 값을 가져와 담아줘야 하므로 해당줄을 바꿔주면 된다.

class Solution {
    public int solution(int[][] board) {
        int answer = 0;

        int[][] coins = new int[4][4];
        for(int i = 0; i < 4; i++) {
            for(int j = 0; j < 4; j++) {
                if(i == 0 && j == 0)
                    coins[i][j] = board[i][j];
                else if(i == 0 && j != 0)
                    coins[i][j] = board[i][j] + coins[i][j-1];
                else if(i != 0 && j == 0)
                    coins[i][j] = board[i][j] + coins[i-1][j];
                else
                    coins[i][j] = board[i][j] + Math.max(coins[i-1][j], coins[i][j-1]);
            }
        }

        answer = coins[3][3];
        return answer;
    }

문제 설명

4 x 4 크기인 정사각형 종이가 1 x 1 크기인 격자 칸으로 나누어져 있습니다. 이 종이를 가로축 혹은 세로축에 평행한 격자 선을 따라 한 번 접었을 때, 만나는 격자 칸에 적힌 숫자의 합이 최대가 되도록 하려 합니다. 종이를 접을 때는 만나는 격자 칸이 정확히 일치하도록 해야 합니다.

예를 들어 다음과 같이 4 x 4 크기인 종이가 있을 때,

종이는 점선 중 하나를 따라서 접을 수 있습니다. 이때, 붉은색 점선을 따라 종이를 접으면 36과 19가 적힌 칸이 정확히 만납니다. 두 숫자의 합은 55이며, 이때가 최댓값입니다.

4 x 4 크기인 정사각형 종이의 각 격자 칸에 적힌 숫자가 담긴 배열 grid가 매개변수로 주어질 때, 종이를 접었을 때 만나게 되는 격자 칸에 적힌 숫자의 합 중 최댓값을 return 하도록 solution 메소드를 작성했습니다. 그러나, 코드 일부분이 잘못되어있기 때문에, 몇몇 입력에 대해서는 올바르게 동작하지 않습니다. 주어진 코드에서 한 줄만 변경해서 모든 입력에 대해 올바르게 동작하도록 수정하세요.

 

매개변수 설명

4 x 4 크기인 정사각형 종이의 각 격자 칸에 적힌 숫자가 담긴 배열 grid가 solution 메소드의 매개변수로 주어집니다.

  • 각 격자칸에 적힌 수는 1 이상 100 이하인 자연수입니다.

return 값 설명

격자 선을 따라 종이를 한 번 접었을 때 만나는 격자 칸에 적힌 숫자의 합 중 최댓값을 return 해주세요.

  • 격자 선은 문제의 예제와같이 가로, 혹은 세로 방향으로 평행한 점선을 말합니다.

예제

grid return
[[1, 4, 16, 1], [20, 5, 15, 8], [6, 13, 36, 14], [20, 7, 19, 15]] 55

예제 설명

문제의 예제와 같습니다.

 

소스 코드

문제 풀이

answer 부분의 코드가 잘못되어있다.

각 for 문에서 오른쪽/아래와 맞닿는 부분의 위치를 표시해 줘야 한다.

그러므로 각각 행, 열의 값을 고정해주면 된다.

class Solution {
    public int solution(int[][] grid) {
        int answer = 0;
        for(int i = 0; i < 4; i++)
            for(int j = 0; j < 4; j++)
                for(int k = j + 1; k < 4; k += 2)
                    answer = Math.max(answer, Math.max(grid[i][j] + grid[i][k], grid[j][i] + grid[k][i]));
        return answer;
    }

문제 설명

직업에 아르바이트, 판매사원이 있습니다. 직원들 급여의 총합을 계산하기 위해 아래와 같이 Job, PartTimeJob, SalesJob 클래스를 작성했습니다.

  • Job :
    • Job : 직업을 나타내는 클래스입니다.
    • salary : 직업의 급여를 나타냅니다. 초기 급여는 0입니다.
    • getSalary : 직업의 급여를 return 합니다.
  • PartTimeJob :
    • PartTimeJob : 아르바이트를 나타내는 클래스이며 Job을 상속합니다.
    • workHour : 아르바이트를 한 시간입니다.
    • payPerHour : 아르바이트의 시간 당 급여입니다.
    • getSalary : 아르바이트 급여를 계산하여 return 합니다.
  • SalesJob :
    • SalesJob : 판매사원을 나타내는 클래스이며 Job을 상속합니다.
    • salesResult : 판매사원의 판매실적입니다.
    • payPerSale : 판매실적 당 급여입니다.
    • getSalary : 판매사원의 급여를 계산하여 return 합니다.

주어진 아르바이트, 판매사원 급여의 총합을 계산하려 합니다.

  • 아르바이트는 기본적으로 아르바이트를 한 시간 X 시간 당 급여를 받으며 40시간 이상 근무시 8시간만큼의 급여를 추가로 받습니다.
  • 판매사원은 기본적으로 판매실적 * 판매실적 당 급여를 받으며 판매실적이 10건이 넘으면 급여를 2배로, 20건이 넘으면 급여를 3배로 받습니다.

아르바이트의 정보가 담긴 2차원 배열 partTimeJobs, 판매사원의 정보가 담긴 2차원 배열 salesJobs가 매개변수로 주어질 때, 모든 직원들 급여의 총합을 return 하도록 solution 메소드를 작성하려 합니다. 위 클래스 구조를 참고하여 주어진 코드의 빈칸을 적절히 채워 전체 코드를 완성해주세요.

매개변수 설명

아르바이트의 정보가 담긴 2차원 배열 partTimeJobs, 판매사원의 정보가 담긴 2차원 배열 salesJobs가 solution 메소드의 매개변수로 주어집니다.

  • partTimeJobs는 길이가 1이상 10이하인 2차원 배열입니다.
  • partTimeJobs의 각 원소는 [아르바이트를 한 시간, 시간 당 급여]입니다.
    • 아르바이트를 한 시간은 1이상 100이하입니다.
    • 시간 당 급여는 1,000이상 20,000이하입니다.
  • salesJobs은 길이가 1이상 10이하인 2차원 배열입니다.
  • salesJobs의 각 원소는 [판매실적, 판매실적 당 급여]입니다.
    • 판매실적은 1이상 30이하입니다.
    • 판매실적 당 급여는 1,000이상 20,000이하입니다.

return 값 설명

모든 직원들 급여의 총합을 return 합니다.

 

입출력 예

partTimeJobssalesJobsreturn

[[10, 5000], [43, 6800], [5, 12800]] [[3, 18000], [12, 8500]] 718800

입출력 예 설명

첫번째 아르바이트에게 50,000(10 * 5,000)을 지급합니다.
두번째 아르바이트에게 346,800(43 * 6,800 + 8 * 6,800)을 지급합니다.
세번째 아르바이트에게 64,000(5 * 12,800)을 지급합니다.
첫번째 영업사원에게 54,000(3 * 18,000)을 지급합니다.
두번째 영업사원에게 204,000(12 * 8,500 * 2)을 지급합니다.
따라서 급여의 총합은 718,800입니다.

 

소스 코드

문제 풀이

문제 설명을 보면 아르바이트와 판매사원이 Job class를 상속받으므로

extends Job을 넣어주면 된다.

그리고 급여 계산은 오버라이딩 형태로 이미 구현이 되어있으니 선언만 해주면 된다.

 

class PartTimeJob extends Job {
	public int workHour, payPerHour;

	public PartTimeJob(int workHour, int payPerHour) {
            this.workHour = workHour;
            this.payPerHour = payPerHour;
        }

	public int getSalary() {
            salary = workHour * payPerHour;
            if(workHour >= 40)
                salary += (payPerHour * 8);

            return salary;
        }
}
    
    
 class SalesJob extends Job {
        public int salesResult, payPerSale;

        public SalesJob(int salesResult, int payPerSale) {
            this.salesResult = salesResult;
            this.payPerSale = payPerSale;
        }

	public int getSalary() {
            if(salesResult > 20)
                salary = salesResult * payPerSale * 3;
            else if(salesResult > 10)
                salary = salesResult * payPerSale * 2;
            else
                salary = salesResult * payPerSale;

            return salary;
        }
}

 

+ Recent posts