구름LEVEL
난이도별 다양한 문제를 해결함으로써 SW 역량을 향상시킬 수 있습니다.
level.goorm.io
문제 해결 방법
내가 생각해낸 방법대로라면, 다음 두 가지 단계가 필요하다.
- 문자열 S를 3등분했을 때 나올 수 있는 문자열의 모든 경우를 담은 리스트 P를 만든다.
- 리스트 P를 이용해 각각의 가능한 경우에 얻을 수 있는 점수를 계산하여, 최댓값을 얻는다.
우선 중복없는 리스트 P를 만들기 위해 집합에 가능한 모든 경우를 담아준 다음, 리스트로 변환하여 정렬해주었다.
그 다음, 이전에 구했던 것과 마찬가지로 가능한 모든 경우를 확인하면서, 리스트 P의 몇 번 인덱스에 있는지를 이용해 점수를 구했다.
위 내용을 코드로 구현하면 아래와 같다.
n = int(input())
s = input()
# P를 만드는 과정
s_set = set()
for i in range(1, n-1):
for j in range(i+1, n):
s1 = s[:i]
s2 = s[i:j]
s3 = s[j:]
s_set.add(s1)
s_set.add(s2)
s_set.add(s3)
p = list(s_set)
p.sort()
# 최대 점수를 구하는 과정
max_score = 0
for i in range(1, n-1):
for j in range(i+1, n):
s1 = s[:i]
s2 = s[i:j]
s3 = s[j:]
# score = p.index(s1)+1 + p.index(s2)+1 + p.index(s3)+1
score = p.index(s1) + p.index(s2) + p.index(s3) + 3
if score > max_score:
max_score = score
print(max_score)
'알고리즘 > 9oormthon Challenge' 카테고리의 다른 글
[구름톤 챌린지 #8] 통증 (0) | 2023.08.23 |
---|---|
[구름톤 챌린지 #7] 구름 찾기 깃발 (0) | 2023.08.22 |
[구름톤 챌린지 #5] 이진수 정렬 (0) | 2023.08.18 |
[구름톤 챌린지 #4] 완벽한 햄버거 만들기 (0) | 2023.08.18 |
[구름톤 챌린지 #3] 합 계산기 (0) | 2023.08.17 |