반응형
https://level.goorm.io/exam/195688/%EB%AC%B8%EC%9E%90%EC%97%B4-%EB%82%98%EB%88%84%EA%B8%B0/quiz/1
문제
풀이
num = int(input())
s = input()
s_list = []
answer = []
# if num == 3:
# print(6)
# else:
for i in range(1,num-1):
answer.append(s[:i]) # 첫번째 문자열
for j in range(1,num-i): # 두번째부터 1~num-i번째까지 늘리면서 두번째(중간 문자열 생성)
answer.append(s[i:i+j]) # 두번째 문자열
answer.append(s[i+j:]) # 세번째 문자열은 나머지 자동
s_list.append((s[:i],s[i:i+j],s[i+j:]))
answer = sorted(set(answer)) # 중복제거(set) , 정렬(sorted)
res = 0
for a,b,c in s_list: # 정렬된 문자열에서 위치 찾아서 인덱스 값으로 max 갱신
idx_a = answer.index(a) + 1
idx_b = answer.index(b) + 1
idx_c = answer.index(c) + 1
res = max(idx_a+idx_b+idx_c,res)
print(res)
1. 3개의 문자열 부분집합으로 만들어야 하기에 첫번째 문자열은 1번째부터 num-1번째까지 반복
2. 두번째 문자열은 그 다음 1번째부터 num-i번째까지 반복, 세번째 문자열은 나머지
3. 중복제거와 정렬을 이용하고 인덱스값을 통해 최대값 찾기
느낀점
1. 만약 문자열이 3개라면 당연이 인덱스값으로 1, 2, 3으로 6이 나올 것이라고 생각했는데 aaa 같은 경우 중복 제거하면 a 하나뿐이기에 인덱스값이 1, 1, 1이 나오게 된다. (이 경우가 테스트케이스 20개중에 1개만 틀린 경우)
2. 이처럼 20개의 테스트 케이스에서 1개만 틀린다면 절대적으로 생각했던 공식에서 문제가 있지 않은지, 부호에서 틀리진 않았는지 확인해보기
3. 추가로 코드를 작성하기 전에 문제 풀이 방법에 대해 3줄 요약하고 들어가는 것이 좋아보임
반응형
'알고리즘' 카테고리의 다른 글
[구름톤 챌린지] Day 8 - 통증 (0) | 2023.09.03 |
---|---|
[구름톤 챌린지] Day 7 - 구름 찾기 깃발 (0) | 2023.08.23 |
[구름톤 챌린지] Day 5 - 이진수 정렬 (0) | 2023.08.18 |
[구름톤 챌린지] Day 4 - 완벽한 햄버거 만들기 (0) | 2023.08.17 |
[프로그래머스/Lv.2] 튜플_2019 카카오 개발자 겨울 인턴십 (0) | 2023.06.03 |