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
- 최대 유량
- 최대유량
- 삼성
- maximum flow
- 네트워크 플로우
- BOJ
- ICPC
- 빅스비
- 이분탐색
- 알고리즘
- 후기
- 백준
- SWEA
- Network Flow
- 코딩테스트
- 완전탐색
- bixby studio
- SDS 알고특강
- JOIN
- 빅스비 스튜디오
- INNER JOIN
- backjoon
- DP
- SWTest
- 분할정복
- 세그먼트트리
- 프로그래머스
- SQL
- 메모이제이션
- Baekjoon
Archives
- Today
- Total
답은 알고리즘 뿐이야!
[BOJ 16500] 문자열 판별 본문
문제 출처 : https://www.acmicpc.net/problem/16500
풀이 :
DP문제입니다.
문자열을 처음부터 끝까지 훑으면서 단어들과 매칭합니다
그리고 단어 목록들로 문자열의 현재 시점까지 완성 시킬 수 있는지 없는지 여부를 word배열에 쌓아가는데, 쌓을 때 현재 검사하고있는 S문자열의 바로 앞 문자까지 완성되있는지 여부를 확인하고 완성되어 있으면 word 배열에 완성 됬다고 쌓아가시면 됩니다.
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
|
#include<stdio.h>
char comp[101];
char carr[101][101];
int n,word[101];
int main()
{
scanf("%s", comp);
scanf("%d\n", &n);
for (int i = 0; i < n; i++) scanf("%s", carr[i]);
int i;
for (i = 0; comp[i]!='\0'; i++)
{
for (int j = 0; j < n; j++)
{
if (comp[i] == carr[j][0])
{
int type = 0,k,k1;
for (k = i + 1, k1 = 1; carr[j][k1] != '\0'&&comp[k] != '\0'&&!type; k++, k1++)if (comp[k] != carr[j][k1])type = 1;
if (type)continue;
if (carr[j][k1] == '\0'&&((i>0&&word[i - 1])||i==0))word[k - 1] = 1;
}
}
}
printf("%d", word[i-1]);
}
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter
|
'알고리즘 > 백준문제풀이' 카테고리의 다른 글
[BOJ 5430] AC (0) | 2019.09.05 |
---|---|
[BOJ 11055] 가장 큰 증가 부분 수열 (0) | 2019.09.05 |
[BOJ 11052] 카드 구매하기 (0) | 2019.09.05 |
[BOJ 11727] 2xn 타일링 2 (0) | 2019.08.27 |
[BOJ 1904] 01타일 (0) | 2019.08.27 |
Comments