여니의 취준 준비/코딩테스트 (Python)

[n1515] 수 이어 쓰기 in python

여니's 2021. 9. 28. 16:50


(처음 생각)

처음에는 문자열 말고 리스트로 받아와서 작업을 진행했다.

그랬더니 인덱스 처리할 부분때문에 

계속 문제가 발생했다.

 

 

로그님의 도움을 받아

겨우 몇 시간만에 풀어낼 수 있었던 문제.. :(

 

 

문자열 문제는 너무 어려웡..

 

 

이 문제는 이해하는 것부터 어려웠다..

그래도 문제는 결국 이해했지만!

((이 문제는 문자열로 풀면 훨씬 간단하다는 거..))

 

 

예제 4번)

82340329923

 

8 12 13 14 20 23 24 29 39 42 43 에서

임의의 숫자를 빼낸 결과물이 

82340329923이다.

 

이 문제는

1부터 시작해가지고

입력값(82340329923 = temp)의 0번째 위치의 값과

비교하면서

결과값을 찾아나간다.

 

 

num는 1부터 시작해서 +1씩 증가한다. 

만약 num의 맨 앞자리 숫자와 temp의 맨 앞자리 숫자가 같으면

temp의 0번째 숫자를 버린다.

 

 

num 또한 0번째 숫자를 버리는데,

 

 

만약 num이나 temp의 길이가 0 이상이라면

위 과정을 계속 반복해야 한다.

 

 

만약 temp의 길이가 0이라면? 

이제 탐색을 완료한 거니까

num를 그대로 출력해주고 반복문 종료하면 끝!

 

 

 

answer = []
temp = input()
i = 0
while True:
    i += 1
    num = str(i)
    while len(num) > 0 and len(temp) > 0:  # num과 temp가 비어있지 않는 경우에만 while문 돌아간다.
        if num[0] == temp[0]:
            temp = temp[1:]
        num = num[1:]  # num이 112인데, temp[0]이 1이 아니면, num은 12, 2로 되고 다시 while문 돌아간다.
        print(num)
    if temp == '':
        print(i)
        break