/images/logo.png

1315 RPG

https://www.acmicpc.net/problem/1315 풀이: a[i][t] : 힘이 i이고, 지력이 t일 때, 깰 수 있는 퀘스트의 수 초기 능력치를 S, I 라고 했을 때, 깰 수 있는 퀘스트를 모두 클리어한다. 클리어 한 후 모인 스텟 포인트를 힘과 지력에 포인트를 적절히 분배한다. 분배한 힘과 지력으로 못 깬 퀘스트를 클리어 할 수 있는지 확인한다. 주의 사항: 시간이 너무 많이 걸리므로 메모이제이션을 통해 a[i][t] 가 값을 가지고 있다면 바로 리턴하도록 만든다. 이전에 방문했었던 visit이 누적될 수 있으므로 초기화해주는 것을 잊지말자.

1357 뒤집힌 덧셈

https://www.acmicpc.net/problem/1357 풀이: 두 숫자를 뒤집어서 입력을 받는다. 입력받은 두 숫자를 더한 후 다시 뒤집는다. 코드: 사용언어 : Python 3 1 2 x,y=map(int,input()[::-1].split()) print(int(str(x+y)[::-1]))```

1398 동전 문제

https://www.acmicpc.net/problem/1398 풀이: a[i] : i원의 가격의 차를 사기위한 동전 개수의 최솟값 동전의 크기가 1, 10 25, 100, 1000, 2500 …. 즉, 1, 10, 25가 100단위로 바뀌고있다. 이를 토대로 뒤의 2자리만 계산하여 구한다. cnt += a[n % 100] 10에 자리까지의 동전 개수를 구한 후 n을 100으로 나누고 계속 10에 자리까지의 동전 개수를 구한다. 코드: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 #include <iostream> #include <algorithm> using namespace std; int a[101] = { 0 }, b[3] = { 1,10,25 }; int main(void) { int T; cin >> T; for (int t = 1; t < 100; t++) { a[t] = INT32_MAX; for (int y = 0; y < 3; y++) { if (t - b[y] >= 0) a[t] = min(a[t], a[t - b[y]] + 1); } } for (int i = 0; i < T; i++) { long long n; int cnt = 0; cin >> n; while (n > 0) { cnt += a[n % 100]; n /= 100; } cout << cnt << endl; } return 0; }

14501 퇴사

https://www.acmicpc.net/problem/14501 풀이: 남은일이 N일 일때, M일의 상담을 완료하는데 걸리는 기간을 T(M)라고 가정한다. 1일에 상담을 했다면 할 수 있는 상담은 1+T(1) ~ N 까지가 있다. 1+T(1) 일에 상담을 했다면 할 수 있는 삼담은 1 + T(1) + T(1+T(1) ~ N 까지가 있다. N을 넘지않도록 주의하며 반복한 후 받을 수 있는 금액에 최대를 출력한다. 코드: 사용언어 : c++ {% highlight c++ %} #include using namespace std; int a, b[16], c[16]; int ts(int q) { int max = 0; for (int i = q; i < a; i++) { int w = c[i] + ts(i + b[i]); if (i + b[i] > a) w = 0; max = max > w ?

1568 새

https://www.acmicpc.net/problem/1568 풀이: 처음 새의 수 n에서 숫자 k를 노래할 때 나중 새의 수 = n - k 노래의 숫자 수를 1씩 증가시켜가며 새의 수보다 많아질 경우 1로 돌아간다. 만약 새의 수가 0이되면 카운트를 출력한다. 코드: 사용언어 : Python 3 1 2 3 4 5 6 7 8 9 10 11 k=int(input()) cnt,s=0,1 while True: if k==0: break if s>k: s=1 cnt+=1 k-=s s+=1 print(cnt)

1629 곱셈

https://www.acmicpc.net/problem/1629 풀이: a, 19 일 때 a*a^18 a*(a^9)^2 a*(a*(a^4)^2)^2 a*(a*((a^2)^2)^2)^2 이런 식으로 풀면 된다. 코드: pow함수 이용 사용언어 : Python 3 1 2 a,b,c=map(int,input().split()) print(pow(a,b,c)) 코드: 사용언어 : Python 3 1 2 3 4 5 6 7 8 a,b,c=map(int,input().split()) def q(k): if(k==0):return 1 w=q(k/2) n=(w*w)%c if(k%2):n=(n*a)%c return n print(q(b))