-
[올리브씨의 알고리즘 입문] Day 5 - 수학, 배열알고리즘/프로그래머스_입문 2024. 3. 29. 01:46
017. 옷가게 할인 받기
문제 설명.
머쓱이네 옷가게는 10만 원 이상 사면 5%, 30만 원 이상 사면 10%, 50만 원 이상 사면 20%를 할인해줍니다.
구매한 옷의 가격 price가 주어질 때, 지불해야 할 금액을 return 하도록 solution 함수를 완성해보세요.제한 사항.
10 ≤ price ≤ 1,000,000
↘ price는 10원 단위로(1의 자리가 0) 주어집니다.
소수점 이하를 버린 정수를 return합니다.입출력 예.
price result 150,000 142,500 580,000 464,000
풀이.
import java.lang.*; class Solution { public int solution(int price) { //1의 자리 버리기 위해 double a = Math.floor(price/10)/100; //구매금액별 할인구간 double b = a>=500? a*800:(a>=300? a*900:(a>=100? a*950:a*1000)); return (int)Math.floor(b); } }
다른 풀이.
class Solution { public int solution(int price) { int answer = 0; if(price>=500000) return (int)(price*0.8); if(price>=300000) return (int)(price*0.9); if(price>=100000) return (int)(price*0.95); return price; } }
018. 아이스 아메리카노
문제 설명.
머쓱이는 추운 날에도 아이스 아메리카노만 마십니다. 아이스 아메리카노는 한잔에 5,500원입니다. 머쓱이가 가지고 있는 돈 money가 매개변수로 주어질 때, 머쓱이가 최대로 마실 수 있는 아메리카노의 잔 수와 남는 돈을 순서대로 담은 배열을 return 하도록 solution 함수를 완성해보세요.
제한 사항.
0 < money ≤ 1,000,000
입출력 예.
money result 5,500 [1, 0] 15,000 [2, 4000]
풀이.
class Solution { public int[] solution(int money) { int iceA = 5500; int cup = 0; int change = 0; boolean flag = (0<money && money<=1000000); if(flag){ cup = money/iceA; change = money%iceA; } int[] answer = {cup,change}; return answer; } }
다른 풀이.
class Solution { public int[] solution(int money) { return new int[] { money / 5500, money % 5500 }; } }
019. 나이 출력
문제 설명.
머쓱이는 선생님이 몇 년도에 태어났는지 궁금해졌습니다. 2022년 기준 선생님의 나이 age가 주어질 때, 선생님의 출생 연도를 return 하는 solution 함수를 완성해주세요
제한 사항.
0 < age ≤ 120
나이는 태어난 연도에 1살이며 매년 1월 1일마다 1살씩 증가합니다.입출력 예.
age result 40 1983 23 2000
풀이.
class Solution { public int solution(int age) { //변수 int nowYear = 2022; int result = 0; //제한조건 boolean flag = (0<age && age<=120); if(flag){ result = nowYear-age +1; } return result; } }
다른 풀이.
code2
020. 배열 뒤집기
문제 설명.
정수가 들어 있는 배열 num_list가 매개변수로 주어집니다. num_list의 원소의 순서를 거꾸로 뒤집은 배열을 return하도록 solution 함수를 완성해주세요.
제한 사항.
1 ≤ num_list의 길이 ≤ 1,000
0 ≤ num_list의 원소 ≤ 1,000입출력 예.
num_list result [1, 2, 3, 4, 5] [5, 4, 3, 2, 1] [1, 1, 1, 1, 1, 2] [2, 1, 1, 1, 1, 1] [1, 0, 1, 1, 1, 3, 5] [5, 3, 1, 1, 1, 0, 1]
풀이.
class Solution { public int[] solution(int[] num_list) { int length = num_list.length; int[] answer = new int[length]; int j = 1; for(int i=1; i<=length ; i++){ answer[i-1] = num_list[length-j]; j++; } return answer; } }
다른 풀이.
import java.util.stream.LongStream; class Solution { public int[] solution(int[] num_list) { return LongStream.range(1, num_list.length + 1) .mapToInt(i -> num_list[(int) (num_list.length - i)]) .toArray(); } } /* 스트림 스터디 참고 https://hstory0208.tistory.com/entry/Java자바-Stream스트림이란 */
출처 :https://school.programmers.co.kr/ 입문 알고리즘
https://school.programmers.co.kr/learn/challenges/beginner?order=acceptance_desc&languages=java
'알고리즘 > 프로그래머스_입문' 카테고리의 다른 글
[올리브씨의 알고리즘 입문] Day 7 - 문자열, 조건문, 수학, 반복문 (0) 2024.04.04 [올리브씨의 알고리즘 입문] Day 6 - 문자열, 반복문, 출력, 배열, 조건문 (0) 2024.04.03 [올리브씨의 알고리즘 입문] Day 4 - 수학, 배열 (0) 2024.03.27 [올리브씨의 알고리즘 입문] Day 3 - 사칙연산, 배열, 수학 (2) 2024.03.26 [올리브씨의 알고리즘 입문] Day 2 - 사칙연산, 조건문, 배열 (0) 2024.03.25