본문 바로가기

항해 99/Java

Java 문법 기초 테스트-1

코딩테스트 Java 입문 단계 문제 풀이 코드

 

1. 두 수의 합

정수 num1, num2가 주어졌을 때 두 수의 합을 반환

class Solution {
    public int solution(int num1, int num2) {
        int answer = num1 + num2;
        return answer;
    }
}

 

 

2. 두 수의 차

정수 num1, num2가 주어졌을 때 두 수의 차를 반환

class Solution {
    public int solution(int num1, int num2) {
        int answer = num1 - num2;
        return answer;
	}
}

 

 

3. 두 수의 곱

정수 num1, num2가 주어졌을 때 두 수의 곱을 반환

class Solution {
    public int solution(int num1, int num2) {
        int answer = num1 * num2;
        return answer;
	}        
}

 

 

4. 두 수의 몫

정수 num1, num2가 주어졌을 때 두 수를 나눈 몫을 반환

class Solution {
    public int solution(int num1, int num2) {
        int answer = num1 / num2;
        return answer;
    }
}

 

 

5. 두 수의 나머지

정수 num1, num2가 주어졌을 때 두 수를 나눈 나머지를 반환

class Solution {
    public int solution(int num1, int num2) {
        int answer = num1 % num2;
        return answer;
    }
}

 

 

6. 나이 출력

나이 age가 주어질 때 2022년도를 기준으로 출생 연도를 return

class Solution {
    public int solution(int age) {
        int year = 2022;
        int answer = year - age + 1;
        return answer;
    }
}

 

 

7. 숫자 비교

정수 num1과 num2가 주어졌을 때, 두 수가 같으면 1, 다르면 -1을 return

class Solution {
    public int solution(int num1, int num2) {
        int answer = 0;
        if (num == num2) {
            answer = 1;
        } else {
            answer = -1;
        }
        
        // 삼항 연산자를 사용하는 방법
        answer = (num1 == num2) ? 1 : -1;
        
        return answer;
    }
}
  • if , else문을 사용해서 1과 -1을 출력하는 방식 외에 삼항 연산자를 사용해서 코드를 간략화하는 것이 가능함.

 

8. 각도기

0도 초과 90도 미만은 예각, 90도는 직각, 90도 초과 180도 미만은 둔각, 180도는 평각으로 분류 됨. angle이 매개 변수로 주어질 때 예각 1, 직각 2, 둔각 3, 평각 4로 return

class Solution {
    public int solution(int angle) {
        int answer = 0;
        
        if (angle < 90) {
            answer = 1;
        } else if (angle == 90) {
            answer = 2;
        } else if (angle < 180) {
            answer = 3;
        } else {
            answer = 4;
        }
        return answer;
    }
}
  •  0 < angle <= 180 조건이 있기 때문에 마지막에 else문을 사용해서 answer를 4로 지정함

 

9. 짝수의 합

정수 n이 주어질 때, n 이하의 짝수를 모두 더한 값을 return

class Solution {
    public int solution(int n) {
        int answer = 0;
        for (int i=0; i <= n; i+=2) { // int i=1; i <= n; i++도 가능
            if (i % 2 == 0) {
                answer = answer + i;
            }
        return answer;
    }
}
  • 짝수라는 조건이 있기 때문에 i가 2씩 증가하도록 코드를 설계함, 홀수의 경우 i의 시작을 1로 하고 if 문 조건을 (i % 2 != 0)으로 변경하면 된다.

 

10. 양꼬치

가게에서 10인분을 먹으면 음료수 하나를 서비스로 준다. 양꼬치 1인분 12,000원 음료수 2,000원일 때 정수 n과 k가 매개변수로 주어질 때 양꼬치 n인분과 음료수 k개를 먹었다면 총 얼마를 지불해야 하는지 return

  • 서비스 받은 음료수는 모두 마신다.
class Solution {
    public int solution(int n, int k) {
        int answer = 0, service = n / 10;
        answer = n * 12000 + k * 2000 - service * 2000;
        return answer;
    }
}

 

 

11. 피자 나눠 먹기(1)

피자가게에서 피자를 7조각으로 잘라준다. 피자를 나눠 먹을 사람 수 n이 주어질 때, 모든 사람이 피자를 1조각 이상 먹기 위해 필요한 피자 수를 return

class Solution {
    public int solution(int n) {
        int answer = 0;
        answer = n / 7;
        if (n % 7 >= 1) {
            answer += 1;
        }
        return answer;
    }
}
  • 기본적으로 사람 수를 피자 조각 수로 나눈 개수가 필요한 피자 수(n / 7), 사람의 수를 피자수로 나눈 나머지가 1 이상인 경우 피자 수가 1 증가해야 되므로 if문을 통해 해결.

 

12. 피자 나눠 먹기(3)

피자가게에서 피자를 2~10조각까지 원하는 조각 수로 잘라준다. 피자조각 수 slice와 먹는 사람 수 n이 매개 변수로 주어질 때, n명의 사람이 피자 1조각을 먹으려면 최소 몇 판의 피자가 필요한지 return

class Solution {
    public int solution(int slice, int n) {
        int pizza = 0;
        if (slice >= 2 && 10 >= slice) {
            pizza = n / slice;
            if (n % slice >= 1) {
                pizza += 1;
            }
        }
        return pizza;
    }
}
  • 우선 조건문을 통해 피자 수가 2이상 10이하 인 값만 계산되도록 설정함(값이 이상하면 else문으로 빠져나오도록 설계 가능)
  • 피자 수는 n(먹을 사람 수) / slice(조각 수)로 구한다. 이때 이전의 피자 나눠 먹기처럼 n % slice의 나머지가 1 이상인 경우 피자 수를 1개 늘리도록 if문을 추가 작성했다.

 

13. 점의 위치 구하기

사분면은 한 평면을 x축과 y축을 기준으로 나눈 네 부분임. (x와 y가 모두 양수일 때 1사분면, x는 음수 y는 양수일 때 2사분면, x와 y가 모두 음수일 때 3사분면, x는 양수 y는 음수일 때 4사분면임) 좌표(x, y)를 차례대로 담은 정수 배열 dot이 매개변수로 주어질 때 dot이 몇 사분면에 속하는지 return

class Solution {
    public int solution(int[] dot) {
        int quadrant = 0;
        int x = dot[0], y = dot[1];
        
        if (x > 0 && 0 < y) {
            quadrant = 1;
        } else if (x < 0 && 0 < y) {
            quadrant = 2;
        } else if (x < 0 && 0 > y) {
        	quadrant = 3;
        } else if (x > 0 && 0 > y) {
            quadrant = 4;
        }
        
        return quadrant;
        
        // 위 코드를 좀 더 간단하게 작성
        if (dot[0] > 0) {
            if (dot[1] > 0) {
                quadrant = 1;
            } else {
                quadrant = 4;
            }
        } else {
            if (dot[1] > 0) {
                quadrant = 2;
            } else {
                quadrant = 3;
            }
        }
    }
}
  • AND 연산자를 사용해 2가지 조건이 맞는 경우에 따라 사분면을 정하도록 코드를 설계함.
  • 아래쪽 코드는 if, else문에 중첩 if문을 통해 사분면을 정하도록 설계한 코드.

 

14. 아이스 아메리카노

아이스 아메리카노 1잔 5,500원일 때, 가진 돈 money가 매개 변수로 주어지면 최대로 마실 수 있는 아메리카노의 잔 수와 남은 돈을 순서대로 담은 배열을 return

class Solution {
    public int solution(int money) {
        int result = new int[2]; // 2개 값만 들어가면 되므로 2칸 배열 선언
        
        //잔 수
        result[0] = money / 5500;
        //남은 돈
        result[1] = money % 5500;
        
        return result;
    }
}
  • 배열을 선언하고 배열에 값을 넣는 방법을 알고 있으면 쉽게 풀 수 있는 문제

 

15. 옷가게 할인 받기

옷 가게에서 10만원 이상 구입 시 5%, 30만원 이상 구입 시 10%, 50만원 이상 구입 시 20% 할인을 해준다. 구매한 옷 가격 price가 주어질 때, 지불해야 할 금액을 return

class Solution {
    public int solution(int price) {
        int salePrice = 0;
        double result = 0;
        
        if (price >= 500000) {
            result = price - price * 0.2; // 20% 계산을 위해 *0.2
            salePrice = (int)result; // double값을 int로 강제 형변환
        } else if (price >= 300000) {
            result = price - price * 0.1;
            salePrice = (int)result;
        } else if (price >= 100000) {
            result = price - price * 0.05;
            salePrice = (int) result;
        } else {
            salePrice = price; // 할인 받을 금액이 없는 경우
        }
        return salePrice;
    }
}
  • result를 double로 받고 salePrice에 줄 때 int로 형변환하는 이유는 할인율을 int로 바꿔서 계산 시 실제 할인 받아야 될 금액과 오차가 발생하기 때문.

 

16.  제곱수 판별하기

자연수를 제곱했을 때 나오는 정수를 제곱수라고 함. 정수 n이 매개변수로 주어질 때, n이 제곱수라면 1을 아니라면 2를 return

class Solution {
    public int solution(int n) {
        int answer = 0;
        if (Math.sqrt(n)%1 == 0) {
            answer = 1;
        } else {
            answer = 2;
        }
        return answer;
    }
}
  • 제곱근을 구하는 Math.sqrt를 사용하면 제곱수를 쉽게 구할 수 있음(제곱근을 1로 나눴을 때 0이 아니라면 제곱수가 아님).

'항해 99 > Java' 카테고리의 다른 글

Java 문법 기초 테스트-3  (1) 2024.01.22
Java 문법 기초 테스트-2  (0) 2024.01.20
Java 문법 종합 2주차-2  (0) 2024.01.17
Java 문법 종합 2주차-1  (0) 2024.01.16
Java 문법 종합 1주차  (1) 2024.01.16