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 |
Tags
- Spring Security
- CS
- 코딩테스트
- 프로세스
- 스프링
- 백준 2302
- 백준 파이썬
- 네이버
- 운영체제
- 백준 1120
- CI/CD
- 백준 10819
- 증가하는부분수열
- 파이썬
- Spring
- 백준 14499
- docker
- 코테
- 백준 2529
- 백준
- 프로그래머스
- 후위 표기식
- 락
- 자바스크립트
- 스레드
- 9465 스티커
- 도커
- 다익스트라
- 백준 15686
- 백트래킹
Archives
- Today
- Total
개발
[백준] 1120 문자열 (파이썬) 본문
문제를 풀면서 느끼기에 실버4보다 어려웠다. 오른쪽 문자열에서 왼쪽 문자열이 포함되어 있는 개수를 세면 쉽게 풀거 같다는 느낌은 받았는데, 인덱스 처리를 어떻게 해야할지 감이 안잡혀서 문제 그대로 왼쪽과 오른쪽에 문자열을 추가해서 비교하는 방식으로 구현했다. 다른 사람들 풀이를 보니까 이중 for문으로 간단하게 풀어서 좀 허탈했던 문제였다.
import sys
input = sys.stdin.readline
a, b = input().rstrip().split()
diff = len(b) - len(a)
word_set = set()
ans = sys.maxsize
def check(a, b):
res = 0
for i in range(len(b)):
if a[i] == "*":
continue
elif a[i] != b[i]:
res += 1
return res
def solution(inp, remain):
global ans, b
if remain == 0:
ans = min(ans, check(inp, b))
return 0
left = "*" + inp
right = inp + "*"
if left not in word_set:
solution(left, remain-1)
if right not in word_set:
solution(right, remain-1)
word_set.add(left)
word_set.add(right)
if len(a) == len(b):
ans = check(a,b)
else:
solution(a, diff)
print(ans)'알고리즘 > 문제' 카테고리의 다른 글
| [백준] 15686 치킨배달 (파이썬) (0) | 2022.08.08 |
|---|---|
| [백준] 2529 부등호 (파이썬) (0) | 2022.08.01 |
| [백준] 2302 극장 좌석 (파이썬) (0) | 2022.07.20 |
| [백준] 9465 스티커 (파이썬) (0) | 2022.07.20 |
| [백준] 14002 가장 긴 증가하는 부분 수열 4 (파이썬) (0) | 2022.07.20 |