https://school.programmers.co.kr/learn/courses/30/lessons/82612
풀이 접근법
예시) price = 3 , money = 20 , count = 4 일 때 result = 10이다
이용금액이 3인 놀이기구를 4번 타고 싶은 고객이 현재 가진 금액이 20이라면, 총 필요한 놀이기구의 이용 금액은 30 (= 3+6+9+12) 이 되어 10만큼 부족하므로 10을 return 합니다.
N배수로 값이 증가하므로
3 * (1 + 2 + 3 + 4) 이므로 1~n의 값에 대한 합
totalMoney = price * count * count + 1 / 2 으로 계산된다.
class Solution {
public long solution(int price, int money, int count) {
long answer = -1;
long totalMoney = price * count * (count + 1) / 2;
answer = money - totalMoney > 0 ? 0 : -(money - totalMoney);
return answer;
}
}
totalMoney 에서 1/2 을 해 값이 달라져 답이 틀리다.
그냥 값을 1~ count까지 더해줘서 해결
class Solution {
public long solution(int price, int money, int count) {
long answer = -1;
long cnt = 0;
for(int i= 1; i<=count; i++){
cnt = cnt + i;
}
long totalMoney = price * cnt;
answer = money - totalMoney > 0 ? 0 : -(money - totalMoney);
return answer;
}
}
https://school.programmers.co.kr/learn/courses/30/lessons/12950
풀이 접근법: 같은 인덱스의 값들을 더해준다
class Solution {
public int[][] solution(int[][] arr1, int[][] arr2) {
int[][] answer = new int[arr1.length][arr1[0].length];
for(int i = 0; i< arr1.length; i++){
for(int j = 0; j<arr1[0].length; j++){
answer[i][j] = arr1[i][j] + arr2[i][j];
}
}
return answer;
}
}
번외) 최대 공약수 구하기
public int gcd(int n, int m) {
if(m == 0){
return n;
}else{
return gcd(m, n%m);
}
}