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
- java
- 안드로이드
- 다트
- softeer
- SWIFT
- programers
- baekjoon
- 자바
- MVVM
- 현대sw
- 백준
- 스위프트
- 알고리즘
- 코틀린
- aws
- 머신러닝
- Python
- 파이썬
- GDSC
- 개발
- 플러터
- VSCode
- Android
- DART
- 소프티어
- 프로그래머스
- Flutter
- kotlin
- 코테
- 아마존 웹 서비스
Archives
- Today
- Total
조준장 개발자 생존기
[baekjoon] 백준 5582번(파이썬): 공통 부분 문자열 본문
문제
5582번: 공통 부분 문자열
두 문자열이 주어졌을 때, 두 문자열에 모두 포함된 가장 긴 공통 부분 문자열을 찾는 프로그램을 작성하시오. 어떤 문자열 s의 부분 문자열 t란, s에 t가 연속으로 나타나는 것을 말한다. 예를 들
www.acmicpc.net
알고리즘
- 반복문을 통해 두 개의 문자열을 확인한다.
- 두 개의 문자열중에 문자가 같다면 dp에 +1로 저장한다.
- 저장된 dp값과 answer 값을 비교하여 더 큰 값을 answer에 저장한다.
코드
import sys
s1 = list(map(str, sys.stdin.readline().strip()))
s2 = list(map(str, sys.stdin.readline().strip()))
dp = [[0] * (len(s2) + 1) for _ in range(len(s1) + 1)]
answer = 0
# 반복문을 통해 두 개의 문자열을 확인
for i in range(1, len(s1)+1):
for j in range(1, len(s2)+1):
# 두 개의 문자열중에 문자가 같다면 dp에 +1로 저장
if s1[i - 1] == s2[j - 1]:
dp[i][j] = dp[i-1][j-1] + 1
answer = max(dp[i][j], answer)
print(answer)
github
GitHub - junjange/CodingTest: 내가 푼 코딩 테스트 문제와 해결법
내가 푼 코딩 테스트 문제와 해결법. Contribute to junjange/CodingTest development by creating an account on GitHub.
github.com
'CodingTest > Baekjoon' 카테고리의 다른 글
[baekjoon] 백준 2580번(파이썬): 스도쿠 (1) | 2022.06.18 |
---|---|
[baekjoon] 백준 6593번(파이썬): 상범 빌딩 (0) | 2022.06.17 |
[baekjoon] 백준 9084번(파이썬): 동전 (0) | 2022.06.15 |
[baekjoon] 백준 13023번(파이썬): ABCDE (0) | 2022.06.14 |
[baekjoon] 백준 1038번(파이썬): 감소하는 수 (0) | 2022.06.13 |