Notice
Recent Posts
Recent Comments
12-05 04:22
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- ROWNUM
- 리스트 컴프리헨션
- 백준 1756
- 깃허브
- AWS
- SQLD
- 데이터베이스
- 백준 11059
- 프로그래머스 조건에 맞는 개발자 찾기
- 정규화
- sql
- github
- 백준 24499 파이썬
- 알고리즘
- SAA-C02
- react
- join
- 백준 2852
- 파이썬
- 백준 크리문자열
Archives
- Today
- Total
-
[백준 11059] 크리 문자열 - 파이썬 본문
반응형
문제
https://www.acmicpc.net/problem/11059
풀이
1. 문자열을 정수 배열로 변환한다.
2. 해당 배열의 누적 합을 새로운 배열에 추가한다.
3. 모든 짝수 길이의 부분 문자열을 탐색하며 절반의 합을 계산한다.
4. 만약 절반의 합이 서로 일치한다면 해당 문자열을 길이를 저장한다.
코드
def find(s):
n = len(s)
ans = 0
# 문자열을 정수 배열로 변환
arr = [int(char) for char in s]
# 누적 합 계산
prefix_sum = [0] * (n + 1)
for i in range(1, n + 1):
prefix_sum[i] = prefix_sum[i - 1] + arr[i - 1]
# 모든 짝수 길이의 부분 문자열 탐색
for length in range(2, n + 1, 2):
for start in range(n - length + 1):
mid = start + length // 2
# 누적 합을 이용하여 각 절반의 합 계산
sum_front = prefix_sum[mid] - prefix_sum[start]
sum_back = prefix_sum[start + length] - prefix_sum[mid]
if sum_front == sum_back:
ans = max(ans, length)
return ans
s = str(input())
print(find(s))
반응형
'Algorithm' 카테고리의 다른 글
[백준 1756] 피자굽기 - 파이썬 (0) | 2024.04.13 |
---|---|
[프로그래머스] 조건에 맞는 개발자 찾기 - SQL (0) | 2024.03.07 |
[백준 2852] NBA 농구 - 파이썬 (1) | 2024.03.02 |
[백준 16173] 점프왕 쩰리 - 파이썬 (0) | 2024.03.01 |
[백준 2116] 주사위쌓기 - 파이썬 (0) | 2024.02.28 |
Comments