coding test

[Python] 같은 번호 짝 소거하기

잔망루피 2021. 3. 9. 14:54

0~9로 이루어진 번호 문자열에서 같은 번호로 붙어있는 쌍들을 소거하고 남은 번호를 출력한다. 단, 번호쌍이 소거되고 소거된 번호 쌍의 좌우 번호가 같은 번호이면 또 소거 할 수 있다. 

예를 들어 아래의 번호 열을 언급한 방법으로 소거하고 알아낸 과정을 보도록 한다.

 

 

나의 풀이

 

# 스택을 이용한 풀이
stack=[0]*10
str=input().split()		# 공백 제거
stack[0]=str[0]
top=1
i=0

for i in range(1, 10):		
  if top != 0 and stack[top-1] == str[i]:		# 짝을 찾으면
    stack[top-1]=0					# 값 없애기(pop)
    top-=1
  else:						# 짝이 안 맞을 경우
    stack[top]=str[i]				# stack에 문자를 삽입(push) 
    top+=1

print(stack)

 

풀이에 나와있는 C언어 코드를 파이썬으로 그대로 구현했을 때 기대한 값이 나오지 않았다.

입력이 1 2 3 8 0 9 9 0 8 4일 때 기대값은 ['1', '2', '3', '4', 0, 0, 0, 0, 0, 0]인데 ['1', '2', '3', '4', '0', '9', 0, 0, 0, 0]가 나옴.

stack[top-1]=0 코드를 추가해줌. 짝이 되는 숫자를 초기화하기 위해서.

 

 

 

문제 출처 SW expert academy

 

반응형

'coding test' 카테고리의 다른 글

[파이썬] 1226. 미로1  (0) 2021.03.12
[파이썬] 괄호 짝 판별  (0) 2021.03.09
[C] 패턴 매칭 해결하기  (0) 2021.03.04
[C] Ladder  (0) 2021.02.25
[C, Python] 2차원 배열 정렬  (0) 2021.02.25