Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 소감
- 카카오
- 스마일게이트
- BaekJoon
- 백준
- 투포인터
- 식단
- Union-find
- 1편
- Algorithm
- c++
- LIS #Algorithm #요소추적
- 알고리즘
- 코테
- BFS
- Smilegate
- 카카오인턴
- 유니온파인드
- IBK기업은행 #기업은행 #디지털 #직무 #정리
- 삼성 #코테 #2020상반기 #c++
- 서버개발캠프
- 코딩테스트
- 보석쇼핑
- 중반부
Archives
- Today
- Total
짱아의 개발 기록장
[SWEA] 8676. 동현이와 한결이는 아이돌(c++) / dp 본문
반응형
처음에는 전혀 감을 잡지 못하고 결국.. 다른 분의 코드를 약간 참고해서 구현했다.
dp를 사용하여 "SAMSUNG"을 dp[0]~dp[6]으로 잡아서
1) "S" 일때는 0, 3이니까
dp[0] = dp[0]+1;
dp[3] = dp[2]+dp[3]
2) "A"일때는 1이니까
dp[1] = dp[0]+dp[1]
....이런식으로 dp를 이용하면 된다.
코드 첨부
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
// 8676. 동현이와 한결이는 아이돌
#include <iostream>
#include <cstring>
#include <vector>
using namespace std;
int testcase;
string s;
int dp[7] = {0, };
vector<int> final;
const int MAX = 1000000007;
int main()
{
cin>>testcase;
for(int i=0; i<testcase; i++){
memset(dp, 0, sizeof(dp));
cin>>s;
for(int j=0; j<s.size(); j++){
if(s[j]=='S'){
dp[0] = (dp[0]+1)%MAX;
dp[3] = (dp[2]+dp[3])%MAX;
}else if(s[j]=='A'){
dp[1] = (dp[0]+dp[1])%MAX;
}else if(s[j]=='M'){
dp[2] = (dp[1]+dp[2])%MAX;
}else if(s[j]=='U'){
dp[4] = (dp[3]+dp[4])%MAX;
}else if(s[j]=='N'){
dp[5] = (dp[4]+dp[5])%MAX;
}else if(s[j]=='G'){
dp[6] = (dp[5]+dp[6])%MAX;
}
}
final.push_back(dp[6]);
}
for(int i=0; i<final.size(); i++){
cout<<"#"<<i+1<<" "<<final[i]<<"\n";
}
}
|
cs |
문제 첨부
반응형
'Algorithm > SW Expert Academy' 카테고리의 다른 글
[SWEA] 1868. 파핑파핑 지뢰찾기(c++) / bfs (0) | 2020.09.16 |
---|---|
[SWEA] 10059. 유효기간(c++) / 문자열 처리 (0) | 2020.08.11 |
Comments