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
- 문자열
- 해시 테이블
- boj
- 그리디
- 그래프
- BFS
- DP
- 정렬
- 투 포인터
- 슬라이딩 윈도우
- 세그먼트 트리
- 싸피
- Python
- 트리
- 모던 JavaScript 튜토리얼
- DFS
- SSAFY
- 에라토스테네스의 체
- 누적 합
- 구현
- 13164
- 이분 탐색
- JavaScript
- 플로이드-워셜
- 수학
- 정수론
- 브루트포스
- 2357
- 맵
- 애드 혹
Archives
- Today
- Total
흙금이네 블로그
[BOJ] 4354 - 문자열 제곱 (Python) 본문
아이디어
n은 문자열 내에서 반복되는 패턴의 반복 횟수를 의미하므로,
입력 받은 문자열에서 반복되는 패턴의 길이를 찾은 후 문자열 길이를 패턴의 길이로 나눈다.
풀이 #1
while문에서 입력 받은 문자열 s가 마침표라면 break로 while문을 탈출한다.
s를 두 번 더한 문자열에서 인덱스 0이 아닌 s의 인덱스를 찾고, 문자열 길이를 찾은 인덱스(패턴의 길이)로 나눈다.
11585번 속타는 저녁 메뉴의 풀이 #2와 같은 원리로 동작한다.
while 1:
s = input()
if s == '.':
break
print(len(s)//(s*2).find(s, 1))
풀이 #2
바다코끼리 연산자를 이용하면 숏코딩이 가능하다.
while문의 조건식에서 s에 입력 값을 할당과 동시에 반환하면서 마침표가 아닌 동안 실행문을 반복한다.
while(s:=input())!='.':print(len(s)//(s*2).find(s,1))
'알고리즘' 카테고리의 다른 글
[BOJ] 1097 - 마법의 문자열 (Python) (0) | 2023.01.19 |
---|---|
[BOJ] 16926 - 배열 돌리기 1 (Python, JavaScript) (0) | 2023.01.18 |
[BOJ] 1913 - 달팽이 (Python, JavaScript) (0) | 2023.01.18 |
[BOJ] 7575 - 바이러스 (Python) (0) | 2023.01.18 |
[BOJ] 11585 - 속타는 저녁 메뉴 (Python) (0) | 2023.01.16 |
Comments