일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- SWEA
- 자바
- 안드로이드스튜디오
- androidstudio
- 프로그래머스
- 컴퓨터비전
- java
- git
- 다시풀기
- MSBuild
- WebOS
- level4
- 파이썬
- 어렵다
- Matrix Factorization
- 휴학
- 대학원일기
- 내휴학생활중의아주큰일
- Github
- SQL
- level1
- 컨트리뷰톤
- D3
- py
- LEVEL2
- BFS
- level3
- 대학원
- build
- Python
Archives
- Today
- Total
bit가 눈 앞에서 왔다갔다
Py) SWEA 2007 패턴 마디의 길이 본문
1차: (제한시간 넘겼는데 그냥 풀었음) 47분
0. 입출력
1. 김예고리즘
1-1. 알고리즘
2중 반복문을 사용해 마디의 길이를 변경시켰다.
1) 마디의 길이를 점점 늘림
2) 이전 마디와 이후 마디가 다를 경우 1번으로 돌아감
3) 이전, 이후 마디가 같을 경우, 끝까지 그런지 확인
4) 끝부분은 마디 내용이 잘려서 들어온 경우가 있으므로, 길이/마디길이 +1 만큼 반복
1-2. 코드
num = int(input())
for i in range(num):
sent = input()
save = sent
for s in range(1, len(sent)): # 자르는 길이
if len(sent) == 0:
break
sent = save # 리셋
front = sent[:s]
sent = sent[s:]
while len(sent)//s+1:
now = sent[:s]
sent = sent[s:]
if now == front: # 비어있지 않고 동일하다면 끝까지 확인함
front = now
answer = len(front)
else: break
print("#{} {}".format(i+1, answer))
2. 다른 사람 코드
2-1. 사용 자료구조 및 알고리즘: x
2-2. 로직
for문을 사용한다.
1) 문자열이 최대 30까지 주어진다 했으므로, 점차 증가하는 문자열 길이를 인덱스 값으로 삼아 비교 변수를 만든다 (word)
2) word가 그 다음 단어와 같다면 출력
2-3. 코드
T = int(input())
for t in range(1, T + 1):
arr = input()
word = ''
i = 0
for i in range(30):
word += arr[i]
if word == arr[i + 1:i + len(word) + 1]:
print("#%d %d" % (t, len(word)))
break
간결한데, sasamsasam과 같은 형태는 해결을 못한다.
3. 피드백
1) 제약조건을 생각하고 활용했었어야한다.
2) 내 코드는 sasamsasam과 같은건 해결할 수 있지만, sasam은 해결 못한다. 제약조건 부분을 고쳐야함
3) 이런 것도 못풀었던 작년의 나를 생각해보면, 비록 코드가 좀 깔끔하지 못하고 빼먹은 부분은 있지만 많이 성장한 것 같아서 스스로 칭찬
반응형
'Algorithm > Prob' 카테고리의 다른 글
Py) SWEA 14361 숫자가 같은 배수 (0) | 2022.11.06 |
---|---|
Py) SWEA 14178 1차원 정원 (0) | 2022.11.05 |
Py) SWEA 1859 백만장자 프로젝트 (1) | 2022.11.02 |
Py) 프로그래머스 77484 로또의 최고 순위와 최저 순위 (0) | 2022.07.16 |
Py) 프로그래머스 77485 행렬 테두리 회전하기 (0) | 2022.07.14 |
Comments