Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[여름방학 2주차] - 김예경 #58

Open
wants to merge 6 commits into
base: main
Choose a base branch
from

Conversation

vss121
Copy link
Contributor

@vss121 vss121 commented Jul 10, 2022

😀 PR을 올리기 전 준비

  • assignee를 지정해주셨나요?
  • PR 제목 등 컨벤션을 확인하셨나요?

🤩 이번주 문제

이상한 곱셈 Bronze2
서로 다른 부분 문자열의 개수 Silver3
문자열 압축 lv.1

🧑‍💻 어떻게 푸셨나요?

이상한 곱셈

처음에 그냥 단순하게 이중 반복문으로 푸니 시간초과가 나서
각 자리의 수를 list에 넣은 다음1×3 + 1×4 + 2×3 + 2×4 + 1×3 + 1×4를 인수분해하면 (1+2+1)x(3+4) 임을 이용해서 sum(A)xsum(B)로 구하였습니다.

서로 다른 부분 문자열의 개수

반복문으로 모든 문자열을 구해서 list에 넣고 list를 set로 바꾸어 중복을 제거한 후 개수를 구하였습니다.

문자열 압축

s(입력받은 문자열)을 최소 1글자에서 최대 len(s)//2 글자 단위로 자르는 경우가 있겠고,
각각의 경우에 대해서 ss(압축된 문자열)을 구해서 문자열 길이를 저장할 list에 집어넣었습니다.
temp(비교할 가장 앞 문자열 한 단위)를 뒤에 있는 문자열 한 단위씩 순서대로 비교해가면서 개수를 증가시키고 달라지는 순간에 ss에 붙이는데,
마지막에 새롭게 시작하는 문자는 tempcnt 변수에 저장만 되고 끝나기 때문에 따로 ss에 붙였습니다.

✍️ 질문을 적어주세요.

.

📖 참고 사항

.

@vss121 vss121 self-assigned this Jul 10, 2022
@vss121 vss121 added the 📖 Assignment 주차별 과제를 공유합니다. label Jul 10, 2022
listA = list(map(int, a))
listB = list(map(int, b))

print(sum(listA)*sum(listB))
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

와... 수식화하셔서 푸신건가요???
저는 이중 for문을 이용하여 각 문자끼리 곱한 것을 ans 에 더해주는 식으로 했는데,
정말 소릅돋는 풀이었습니다 ㄷㄷㄷ

arr.append(str[j:j+1+i])
#중복 제거
arr = set(arr)
arr = list(arr)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

python의 slicing이랑 set을 이용하여 푸셨군요!!

하나 아쉬운 점이 있다면,
arrset으로 선언하신 후, set의 add함수를 이용하여 한번에 구할 수 있습니다!

코드 확인하기
s = input()
s_length = len(s)

ans_set = set()
for i in range(s_length):
    for j in range(i, s_length):
        ans_set.add(s[i:j + 1])
    
print(len(ans_set))

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
📖 Assignment 주차별 과제를 공유합니다.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants