[백준] 2294 동전 2
·
PS/백준
문제https://www.acmicpc.net/problem/2294 입력n = 동전의 종류 (1~100)k = 목표 금액 (1~10,000)coins = 각 동전 금액결과ans = k금액을 만들기위해 사용한 동전의 최소 개수. 불가능한 경우에는 -1해석이전에 풀었던 동전1 문제를 최소 개수 구하는 점화식으로 바꾸면 끝dp[i] = i 금액을 만들기위해 사용한 최소 개수 코드import Foundationlet nk = readLine()!.components(separatedBy: " ").map{Int($0)!}let (n, k) = (nk[0], nk[1])var coins: [Int] = []for _ in 0.. k { continue } for i in 0...k-coin { ..
[백준] 2293 동전 1
·
PS/백준
문제https://www.acmicpc.net/problem/2293 입력n = 동전의 종류 (1~100)k = 목표 금액 (1~10,000)coins = 각 동전 금액결과ans: Int = k 목표 금액을 만들 수 있는 경우의 수해석dp를 통한 경우의 수를 카운팅하는 문제 느낌이다. dp 배열의 규칙은 다음과 같다. dp[i] = i원을 만들 수 있는 경우의 수   dp 배열을 저렇게 잡으면 점화식은 이렇게 따오를 것 같다 C를 만들기 위해 B는 동전 A가 부족한 상황이면dp[c] = dp[b] + dp[a] 상황이다.코드import Foundationlet nk = readLine()!.components(separatedBy: " ").map{Int($0)!}let (n,k) = (nk[0], nk..
[백준] 9251 LCS
·
PS/백준
문제https://www.acmicpc.net/problem/9251입력s1 = 문자열s2 = 문자열최대 1000글자결과ans: Int = 가장 긴 부분 수열의 길이해석LCS((Longest Common Subsequence))이므로 dp가 가장 먼저 생각난다. 점화식dp[n][m] = s1의 n번째 s2[m]번째 문자까지 가장 긴 부분 수열의 길이(if \ s[i] == s[j]),  (dp[i][j] = dp[i-1][j-1] +1 )  ,같은 문자를 찾으면 바로 직전 최장 부분 수열 + 1 (else) (dp[i][j] = max(dp[i-1][j], dp[i][j-1]) ,같은 문자가 없을 경우 이전 경우의 수에서 가장 긴 것을 저장 S1 = ACAYKP, S2 = CAPCAK 일 경우 dp 배열..
[프로그래머스] 택배상자
·
PS/프로그래머스
문제 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr입력order:[Int] = 택배 트럭에 실어야하는 순서결과ans: Int = 원하는 순서로 실을 수 있는 최대 상자해석현재 컨베이어 벨트에 있는 순서는 항상 [1...n] 순으로 있고 앞에서부터 뺄 수 있다.이후 택배 트럭에 실어야할 순서인 상자가 아니면 stack에 임시로 넣고 아니면 바로 뺀다. 정리하면 택배 상자를 내릴 수 있는 경우의 수는 2가지다.컨베이어 벨트에서 뺀다.스택에서 뺀다. 단, 스택은 가장 최근에 실은 순으로 뺄 수 있다.코드import Foundationfunc solution(_ o..
[프로그래머스] 산 모양 타일링
·
PS/프로그래머스
문제 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 입력n:Int = 윗변의 길이tops:[Int] = 정삼각형의 위쪽에 정삼각형을 붙이는 여부tops[i] = 0 없는 경우tops[i] = 1 위에 삼각형이 있는 경우결과ans: Int = 만들 수 있는 경우의 수를 10007로 나눈 결과놓을 수 있는 경우의 수 해석 보자마자 dp를 의심할 수 있다. 왜냐하면 이전 삼각형 상태로 다음 상황이 결정되기 때문에 부분 문제를 풀어야되는 dp카테고리다. 경우의 수를 생가가해보지.  1. 현재 i-1에 2번이 놓여있을 때i에 1,3,4(위에 공간이 있을 때) 놓을..
[프로그래머스] 코딩 테스트 공부
·
PS/프로그래머스
문제 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr입력alp:Int = 최초 알고력 cop:Int = 최초 코딩력problems:[[Int]] = problem의 배열 , 길이는 ≤ 6. problem = [alp_req, cop_req, alp_rwd, cop_rwd, cost]alp_req는 문제를 푸는데 필요한 알고력입니다.0 ≤ alp_req ≤ 150cop_req는 문제를 푸는데 필요한 코딩력입니다.0 ≤ cop_req ≤ 150alp_rwd는 문제를 풀었을 때 증가하는 알고력입니다.0 ≤ alp_rwd ≤ 30cop_rwd는 문제를 풀었을 때 ..