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
- 딕셔너리
- 아파치 스파크
- 파이썬
- Hadoop
- programmers
- 분산
- Data Engineering
- 알고리즘
- DP
- leetcode
- docker
- Python
- 스파크
- Apache Spark
- 이진탐색
- 하둡
- Apache Hadoop
- 데이터 엔지니어링
- 아파치 하둡
- 우선순위큐
- heapq
- 도커
- 빅데이터
- 오블완
- 리트코드
- 티스토리챌린지
- 코딩테스트
- 분산처리
- 프로그래머스
- Spark
Archives
- Today
- Total
래원
[LeetCode] 1422. Maximum Score After Splitting a String (Python) 본문
알고리즘/LeetCode
[LeetCode] 1422. Maximum Score After Splitting a String (Python)
Laewon Jeong 2025. 1. 2. 11:19
난이도: Easy
문제 설명
Given a string s of zeros and ones, return the maximum score after splitting the string into two non-empty substrings (i.e. left substring and right substring).
The score after splitting a string is the number of zeros in the left substring plus the number of ones in the right substring.
문제 예제
Example 1:
Input: s = "011101"
Output: 5
Explanation:
All possible ways of splitting s into two non-empty substrings are:
left = "0" and right = "11101", score = 1 + 4 = 5
left = "01" and right = "1101", score = 1 + 3 = 4
left = "011" and right = "101", score = 1 + 2 = 3
left = "0111" and right = "01", score = 1 + 1 = 2
left = "01110" and right = "1", score = 2 + 1 = 3
Example 2:
Input: s = "00111"
Output: 5
Explanation: When left = "00" and right = "111", we get the maximum score = 2 + 3 = 5
Example 3:
Input: s = "1111"
Output: 3
제한 사항
- 2 <= s.length <= 500
- The string s consists of characters '0' and '1' only.
✏️ Solution(솔루션)
class Solution:
def maxScore(self, s: str) -> int:
answer = 0
dic_left = {'0':0, '1':0}
dic_right = {'0':0, '1':0}
for num in s:
dic_right[num] += 1
for i in range(len(s)-1):
dic_right[s[i]] -= 1
dic_left[s[i]] += 1
answer = max(answer, dic_right['1'] + dic_left['0'])
return answer
먼저 '0'과 '1'을 key로 갖는 딕셔너리 2개를 만들었다.
하나는 left를 가리키는 딕셔너리이고 하나는 right를 가리키는 딕셔너리이다.
초기에 left 딕셔너리가 갖는 key들의 value를 모두 0으로 설정하고 right는 s가 가지고 있는 '0'과 '1'의 개수를 value로 설정한다.
그리고 s에 각 요소마다 dic_left[s[i]]는 +1을 하고 dic_right[s[i]]는 -1을 해준다.
다음으로 max함수를 통해(answer = max(answer, dic_right['1'] + dic_left['0'])) 제일 큰 값을 answer에 저장하고, 정답으로 return 하였다.
문제: 1422. Maximum Score After Splitting a String
깃허브: github
'알고리즘 > LeetCode' 카테고리의 다른 글
[LeetCode] 2270. Number of Ways to Split Array (Python) (1) | 2025.01.03 |
---|---|
[LeetCode] 2559. Count Vowel Strings in Ranges (Python) (0) | 2025.01.02 |
[LeetCode] 322. Coin Change (Python) (0) | 2024.12.31 |
[LeetCode] 983. Minimum Cost For Tickets (Python) (0) | 2024.12.31 |
[LeetCode] 2466. Count Ways To Build Good Strings (Python) (0) | 2024.12.30 |