카테고리 없음

프로그래머스 : 부족한 금액 계산하기, 행렬의 덧셈

openDeveloper 2023. 3. 23. 02:40

https://school.programmers.co.kr/learn/courses/30/lessons/82612

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

풀이 접근법 

예시) 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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

풀이 접근법: 같은 인덱스의 값들을 더해준다

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);
        }
        
    }