일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- SWEA
- 월드프렌즈
- 게르
- 교환학생
- 테를지
- 몽골 고기
- 몽골요리
- 파이썬
- 몽골 헬스장
- 알고리즘
- LG글로벌챌린저
- 독일
- 백준
- 아부다비
- 코로나
- 울란바토르
- 여행
- 칭기스칸 동상
- 헬스
- Python
- 테를지국립공원
- 칭기즈칸
- algorithm
- ICT봉사단
- 초원
- 한 줄로 서기
- 몽골
- 담슈타트
- 소프트웨어 아카데미
- 월드프렌즈 ICT 봉사단
Archives
- Today
- Total
맛있는물회
[맛있는물회] <SWEA알고리즘> 4873번 "반복문자 지우기" 본문
문제 조건
문자열 s에서 반복된 문자를 지우려고 한다. 지워진 부분은 다시 앞뒤를 연결하는데, 만약 연결에 의해 또 반복문자가 생기면 이부분을 다시 지운다.
반복문자를 지운 후 남은 문자열의 길이를 출력 하시오. 남은 문자열이 없으면 0을 출력한다.
다음은 CAAABBA에서 반복문자를 지우는 경우의 예이다.
CAAABBA 연속 문자 AA를 지우고 C와 A를 잇는다.
CABBA 연속 문자 BB를 지우고 A와 A를 잇는다.
CAA 연속 문자 AA를 지운다.
C 1글자가 남았으므로 1을 리턴한다.
Input
첫 줄에 테스트 케이스 개수 T가 주어진다. 1≤T≤ 50
다음 줄부터 테스트 케이스의 별로 길이가 1000이내인 문자열이 주어진다.
Output
#과 1번부터인 테스트케이스 번호, 빈칸에 이어 답을 출력한다.
생각한 아이디어
맨 처음에 접근할 때는 String.replace()함수를 사용했다.
그럤더니 반복되는 문자를 문장내에서 싹 다 지워버렸다. 그래서 새로운 방법을 찾아보았다.
만약 i 번째가 반복된다면 그 앞 부분 즉, str1 = [0: (i-1)]으로 자르고 뒷 부분 즉, str2 = [i+2:] 로 잘라서 저장했다.
그리고 str1과 str2 를 + 해서 연결해준다면 반복되는 부분이 삭제되고 저장이 된다.
소스코드
T = int(input())
for TC in range(1, T + 1):
string = str(input())
i=0
while 1:
if i == len(string)-1:
break
if string[i] == string[i+1]:
str1 = string[0:i]
str2 = string[i+2:]
string = str1 + str2
#string = string.replace(string[i],"")
i=0
else:
i += 1
print("#%d %d" %(TC, len(string)))
*파이썬 문법 정리
- 파이썬은 문자열을 다루는데 아주 간편한 언어인듯 하다.
- string = string.replace(string[i],"") 로 하면 string[i]와 같은 문자가 있는 부분을 싹 다 지워준다.
'IT > 알고리즘' 카테고리의 다른 글
[맛있는물회] <백준 알고리즘> 15953번 "상금 헌터" (0) | 2020.04.05 |
---|---|
[맛있는물회] <SWEA알고리즘> 4874번 "Forth" (0) | 2020.04.05 |
[맛있는물회] <SWEA알고리즘> 4871번 "그래프 경로" (0) | 2020.04.05 |
[맛있는물회] <SWEA알고리즘> 4866번 "괄호검사 " (0) | 2020.04.05 |
[맛있는물회] <SWEA알고리즘> 4869번 "종이붙이기" (0) | 2020.04.05 |
Comments