티스토리 뷰
#include <stdio.h>
int main(void)
{
long long n, d=0, dk=0, dks=0, dksh=0;
scanf("%lld", &n);
char arr[n+1];
scanf("%s", arr);
for(int i=0; i<n; i++) {
if(arr[i] == 'D') d++;
else if(arr[i] == 'K') dk+=d;
else if(arr[i] == 'S') dks += dk;
else if(arr[i] == 'H') dksh += dks;
}
printf("%lld", dksh);
}
풀이 : 누적 합
D, K, S, H 을 봅시다.
D가 나올때 마다 d을 증가시켜주다가
K가 나오게 되면 만들수 있는 DK의 개수는 d와 같습니다.
S가 나오게 되면 만들수 있는 DKS의 개수는 dk와 같습니다.
H가 나오게 되면 만들수 있는 DKSH의 개수는 dks와 같습니다.
이를 이용해서, D, K, S, H가 나올 때마다 이와 관련된 변수들의 값을 변경해주면 됩니다.
마지막으로 DKSH의 개수인 dksh을 출력합니다.
https://www.acmicpc.net/problem/25427
25427번: DKSH를 찾아라
준혁이는 DKSH(단국대학교부속소프트웨어고등학교)에 다니는 학생이다. 어느 날, 준혁이는 길을 걷다가 $N$ 개의 알파벳 대문자가 써있는 종이를 발견했다. 평소에 자신이 DKSH에 다니는 학생이라
www.acmicpc.net
'c언어 > BAEKJOON' 카테고리의 다른 글
c언어 28070번 유니의 편지 쓰기 (백준) (0) | 2023.08.15 |
---|---|
c언어 25634번 전구 상태 뒤집기 (백준) (0) | 2023.08.15 |
c언어 5549번 행성탐사 (백준) (0) | 2023.08.14 |
c언어 20159번 동작 그만. 밑장 빼기냐? (백준) (0) | 2023.08.14 |
c언어 27210번 신을 모시는 사당 (백준) (0) | 2023.08.14 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- BFS
- Segment Tree
- 누적 합
- C언어
- C++
- 정렬
- 오프라인 쿼리
- 그리디
- PASCAL
- 백준
- 그래프
- 플로이드
- 스택
- Lazy Propagation
- DFS
- 최소 스패닝 트리
- DP
- 브루트포스
- java
- union
- 기하학
- XOR
- 1835번
- find
- 누적합
- 덱
- 세그먼트 트리
- Krustal
- 1835
- 최대공약수
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함