본문 바로가기

문자열5

[G5] 백준 9251 - LCS (python3) https://www.acmicpc.net/problem/9251 9251번: LCS LCS(Longest Common Subsequence, 최장 공통 부분 수열)문제는 두 수열이 주어졌을 때, 모두의 부분 수열이 되는 수열 중 가장 긴 것을 찾는 문제이다. 예를 들어, ACAYKP와 CAPCAK의 LCS는 ACAK가 된다. www.acmicpc.net 해결방법 2차원 배열의 캐시값을 만들어 해결했다. - 백준 사이트의 [예제 입력 1] A C A Y K P [0, 0, 0, 0, 0, 0, 0] C [0, 0, 1, 1, 1, 1, 1] A [0, 1, 1, 2, 2, 2, 2] P [0, 1, 1, 2, 2, 2, 3] C [0, 1, 2, 2, 2, 2, 3] A [0, 1, 2, 3, 3, 3,.. 2023. 8. 20.
[G5] 백준 5582 - 공통 부분 문자열 (python3) https://www.acmicpc.net/problem/5582 5582번: 공통 부분 문자열 두 문자열이 주어졌을 때, 두 문자열에 모두 포함된 가장 긴 공통 부분 문자열을 찾는 프로그램을 작성하시오. 어떤 문자열 s의 부분 문자열 t란, s에 t가 연속으로 나타나는 것을 말한다. 예를 들 www.acmicpc.net 해결방법 LCS(Longest Common Subsequence, 최장 공통 부분 수열)에서 아이디어를 빌려왔다. 풀이👀 A B R A C A D A B R A E [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] C [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0] A [1, 0, 0, 1, 0, 2, 0, 1, 0, 0, 1] D [0, 0, 0, 0, 0, 0.. 2023. 8. 19.
[S4] 백준 4949 - 균형잡힌 세상 (Python3) https://www.acmicpc.net/problem/4949 4949번: 균형잡힌 세상 하나 또는 여러줄에 걸쳐서 문자열이 주어진다. 각 문자열은 영문 알파벳, 공백, 소괄호("( )") 대괄호("[ ]")등으로 이루어져 있으며, 길이는 100글자보다 작거나 같다. 각 줄은 마침표(".")로 끝난다 www.acmicpc.net 이 문제보다 한 단계 쉬운 문제는 백준 9012번: 괄호라고 생각한다. 이 문제를 풀고나서 이 문제를 푸는 것을 추천한다. 해결방법 스택을 활용하는 문제이다. bracket 이라는 리스트 변수에 여는 괄호("(", "[")를 담고, 닫는 괄호(")", "]")가 나올 때마다 bracket의 원소를 pop 해주는 방식으로 문제를 풀었다. 코드 while (string:=inpu.. 2023. 1. 14.
[Python] 백준 5430 - AC https://www.acmicpc.net/problem/5430 해결방법 문제에 나와있는 대로 따르면 충분히 풀 수 있는 문제이긴 하다. 하지만 곧이곧대로 따르기만 하면 여러 가지 문제로 해결이 불가능하다. 코드 tc = int(input()) for _ in range(tc): command = input() arr_len = int(input()) input_raw_arr = input() raw_arr = list(map(str, input_raw_arr)) raw_arr.pop(0); raw_arr.pop(-1) arr = (''.join(raw_arr)).split(',') error = False # True: 에러 on, False: 정상작동중 head = True # True: 앞부터 읽.. 2022. 5. 29.
[Python] 백준 1439 - 뒤집기 https://www.acmicpc.net/problem/1439 1439번: 뒤집기 다솜이는 0과 1로만 이루어진 문자열 S를 가지고 있다. 다솜이는 이 문자열 S에 있는 모든 숫자를 전부 같게 만들려고 한다. 다솜이가 할 수 있는 행동은 S에서 연속된 하나 이상의 숫자를 잡고 모 www.acmicpc.net 해결방법 제가 풀이한 해결 방법은 두 가지가 있습니다. 하나는 문자열을 전부 읽어 들이는 방법, 다른 하나는 split 함수를 이용하는 방법이 있습니다. 방법 1. import math string = input() L = len(string) cnt = 0 for i in range(L-1): if string[i] != string[i+1]: cnt += 1 cnt /= 2 print(math.. 2022. 5. 7.