티스토리 뷰
# 양꼬치
문제 설명
머쓱이네 양꼬치 가게는 10인분을 먹으면 음료수 하나를 서비스로 줍니다. 양꼬치는 1인분에 12,000원, 음료수는 2,000원입니다. 정수 n과 k가 매개변수로 주어졌을 때, 양꼬치 n인분과 음료수 k개를 먹었다면 총얼마를 지불해야 하는지 return 하도록 solution 함수를 완성해보세요.
제한사항
0 < n < 1,000
n / 10 ≤ k < 1,000
서비스로 받은 음료수는 모두 마십니다.
입출력 예 설명
입출력 예 #1
10인분을 시켜 서비스로 음료수를 하나 받아 총 10 * 12000 + 3 * 2000 - 1 * 2000 = 124,000원입니다.
입출력 예 #2
64인분을 시켜 서비스로 음료수를 6개 받아 총 64 * 12000 + 6 * 2000 - 6 * 2000 =768,000원입니다.
나의 답변
class Solution {
public int solution(int n, int k) {
int answer = 0;
int service = 0;
if(n/10>=1){
service = n/10;
answer = (12000*n) + (2000*(k-service));
}
else{
answer = (12000*n) + (2000*k);
}
return answer;
}
}
다른 사람 풀이
class Solution {
public int solution(int n, int k) {
int lambTotalPrice = totalPrice(Menu.LAMB, n);
int drinkTotalPrice = totalPrice(Menu.DRINK, k);
int discountPrice = discount(Menu.DRINK, n);
int totalPay = lambTotalPrice + drinkTotalPrice - discountPrice;
return totalPay;
}
private int totalPrice(Menu menu, int quantity) {
return menu.getPrice() * quantity;
}
private int discount(Menu menu, int lambQuantity) {
// 양꼬치 10인분에 음료수 하나
int point = lambQuantity / 10;
return menu.getPrice() * point;
}
}
enum Menu {
LAMB("양꼬치", 12000),
DRINK("음료수", 2000);
private final String name;
private final int price;
Menu(String name, int price) {
this.name = name;
this.price = price;
}
public String getName() {
return name;
}
public int getPrice() {
return price;
}
}
# 나이 출력
문제 설명
머쓱이는 선생님이 몇 년도에 태어났는지 궁금해졌습니다. 2022년 기준 선생님의 나이 age가 주어질 때, 선생님의 출생 연도를 return 하는 solution 함수를 완성해주세요
제한사항
0 < age ≤ 120
나이는 태어난 연도에 1살이며 매년 1월 1일마다 1살씩 증가합니다.
입출력 예 설명
입출력 예 #1
2022년 기준 40살이므로 1983년생입니다.
입출력 예 #2
2022년 기준 23살이므로 2000년생입니다.
나의 답변
class Solution {
public int solution(int age) {
int answer = 2022-age+1;
System.out.println("2022년도 기준"+age+"살 이므로"+answer+"년생입니다.");
return answer;
}
}
만약 현재 년도를 기준으로 몇살이냐 물을 경우 LocalDate 메서드를 사용하여 현재 년도를 가져와 계산한다.
import java.time.*;
class Solution {
public int solution(int age) {
LocalDate today = LocalDate.now();
return today.getYear() - age + 1;
}
}
# 진료 순서 정하기
문제 설명
외과의사 머쓱이는 응급실에 온 환자의 응급도를 기준으로 진료 순서를 정하려고 합니다. 정수 배열 emergency가 매개변수로 주어질 때 응급도가 높은 순서대로 진료 순서를 정한 배열을 return하도록 solution 함수를 완성해주세요.
제한사항
중복된 원소는 없습니다.
1 ≤ emergency의 길이 ≤ 10
1 ≤ emergency의 원소 ≤ 100
입출력 예 설명
입출력 예 #1
emergency가 [3, 76, 24]이므로 응급도의 크기 순서대로 번호를 매긴 [3, 1, 2]를 return합니다.
입출력 예 #2
emergency가 [1, 2, 3, 4, 5, 6, 7]이므로 응급도의 크기 순서대로 번호를 매긴 [7, 6, 5, 4, 3, 2, 1]를 return합니다.
입출력 예 #3
emergency가 [30, 10, 23, 6, 100]이므로 응급도의 크기 순서대로 번호를 매긴 [2, 4, 3, 5, 1]를 return합니다.
나의 답변
class Solution {
public int[] solution(int[] emergency) {
int[] answer = new int[emergency.length];
for(int i=0; i<emergency.length; i++){
int rank=1;
for(int j=0; j<emergency.length; j++){
if(emergency[j]>emergency[i]){
rank++;
}
}
answer[i]=rank;
}
return answer;
}
}
int j가 0인 이유
처음에는 i가 0으로 시작하니 다음 값부터 시작하면 된다 생각했지만
그렇게 되면 emergency[0]의 값이랑은 비교를 하지 않기때문에 rank 값에 오류가 발생한다.
그렇기 때문에 j 또한 0부터 시작해야한다.
'코딩 > 프로그래머스' 카테고리의 다른 글
[SQL - SUM,MAX,MIN] 1 (0) | 2024.05.28 |
---|---|
[SQL - JOIN] 2 (0) | 2024.05.27 |
코딩 기초 트레이닝 #35 ~ #37 (0) | 2024.05.25 |
코딩 기초 트레이닝 #34 (0) | 2024.05.24 |
[SQL - JOIN] 1 (0) | 2024.05.24 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday