[JAVA] 프로그래머스 - 거스름돈

2023. 11. 23. 20:08· 알고리즘/프로그래머스
 

프로그래머스

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

programmers.co.kr


의식의 흐름

dp 문제네

-> 0원~n원까지 가능한 경우의 수를 다 저장하면 되겠다.

-> 풀고 나니 1,000,000,007로 나눈 나머지라는 조건을 까먹고 그냥 원래 값을 return했는데 통과네..?

-> 1,000,000,0007로 나누는 코드 추가해서 제출했는데 시간 초과 🙄

-> 코드 살짝 수정하고 통과

문제 자체는 어렵지 않았는데 이 문제 덕분에 내가 쓰던 로직을 살짝 수정해서 좀 더 빠른 로직으로 수정할 수 있었다

풀이 과정

1. i번째 동전까지 사용해서 j원 만들 수 있는 경우의 수를 담을 배열(dp)을 만든다.

2. i번째 동전에 대해 dp[i][j]를 구한다.

2-1) 0원을 만들 수 있는 경우의 수는 무조건 1

2-2) dp[i][j] = dp[i-1][j];

2-3) 만약 i번째 동전(money[i-1])이 j원보다 작거나 같은 경우, dp[i][j] = dp[i-1][j] + dp[i][j-money[i-1]];

원래 코드는 2-2를 2-3에 대한 else문으로 뒀었는데 이렇게 두니까 시간초과가 나더라ㅏ,,

2-4) dp[i][j]를 1,000,000,007로 나눈 나머지로 바꿔준다.3. dp[moneyCnt][n]을 return한다.

 

코드
import java.util.*;

class Solution {
    public int solution(int n, int[] money) {
        int moneyCnt = money.length;
        int[][] dp = new int[moneyCnt+1][n+1];
        
        for(int i=1;i<=moneyCnt;i++){
            dp[i][0] = 1;
            for(int j=1;j<=n;j++){
                dp[i][j] = dp[i-1][j];
                if (money[i-1] <= j){
                    dp[i][j] = dp[i-1][j] + dp[i][j-money[i-1]];
                }
                
                dp[i][j] %= 1_000_000_007;
            }
        }
        
        return dp[moneyCnt][n];
    }
}
저작자표시 (새창열림)

'알고리즘 > 프로그래머스' 카테고리의 다른 글

[JAVA] 프로그래머스 - [3차]압축  (0) 2023.05.03
[JAVA] 프로그래머스 - 튜플  (0) 2023.05.01
[JAVA] 프로그래머스 - [1차] 캐시  (0) 2023.05.01
[JAVA] 프로그래머스 - 귤 고르기  (0) 2023.05.01
'알고리즘/프로그래머스' 카테고리의 다른 글
  • [JAVA] 프로그래머스 - [3차]압축
  • [JAVA] 프로그래머스 - 튜플
  • [JAVA] 프로그래머스 - [1차] 캐시
  • [JAVA] 프로그래머스 - 귤 고르기
하얀 돌덩이
하얀 돌덩이
하얀 돌덩이
돌덩이
하얀 돌덩이
전체
오늘
어제
  • 분류 전체보기 (59)
    • 개발 일지 (2)
    • 스프링 (1)
    • JAVA (2)
    • 딥러닝 (10)
    • 알고리즘 (43)
      • 개념 (4)
      • 프로그래머스 (5)
      • 백준 (34)
    • 후기 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.1
하얀 돌덩이
[JAVA] 프로그래머스 - 거스름돈
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.