SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
나의 코드
스택 사용
for t in range(10):
N, data = input().split()
# data_list = list(map(int, data))
stack = []
for i in data:
if len(stack) == 0 or stack[-1] != i:
stack.append(i)
else:
stack.pop()
print(f'#{t+1}', ''.join(stack))
실패 - 이전의 값과 비교하면서 같을 때 제거하는 형식
def remove(arr, length):
for i in range(1, length):
if arr[i-1] == arr[i]:
arr.remove(arr[i-1])
arr.remove(arr[i-1])
print(arr)
length = length - 2
remove(arr, length)
break # 이걸 추가하면 인덱스에러 해결
return arr
for t in range(10):
N , data = input().split()
data_list = list(map(int, data))
print(remove(data_list, int(N)))

원하는 방식으로 리스트는 추출했으나 인덱스에러가 나면서 다음번의 데이터를 못가져온다.
(+break를 추가하면서 인덱스에러는 해결, 하지만 같은 값이지만 연속하는 수가 아닌 것도 제거하는 문제 발생, 왜인지는 모름)
처음에 리스트에 넣고 이전의 숫자와 같으면 이전의 숫자와 지금의 숫자 두 개를 한번에 삭제하는 방식으로 함수를 짰고 그게 계속 반복되는 상황에 그 함수를 계속 쓰게 하려고 재귀함수로 구현을 해보려고 했다. 제거하는 과정에서 출력을 해보니 내 생각대로 제거는 되었지만 어디선가 인덱스 에러가 나서 열 개의 데이터를 다 보지는 못했다.
그래서 두 번째 방법을 스택의 방법으로 써서 해결했다. 첫번째 방법에서 썼던 data_list는 출력에 join함수를 쓰려면 문자여야 돼서 쓰지 않았다. 스택의 개념은 알지만 아직 문제를 읽으며 스택을 써야하는지 구분은 잘 못하는 것 같다.
'스터디 1일 1커밋' 카테고리의 다른 글
| 240226 [BOJ/백준] 15650. N과 M (2) (1) | 2024.02.27 |
|---|---|
| 240225 [BOJ/백준] 24482. 알고리즘 수업- 깊이 우선 탐색 4 (1) | 2024.02.25 |
| 240223 [BOJ/백준] 2178. 미로탐색 (0) | 2024.02.23 |
| 240222 [swea] 11315. 오목판정 (0) | 2024.02.23 |
| 240222 [swea] 19185. 육십갑자 (0) | 2024.02.23 |