같은 숫자 찾기

2018. 11. 3. 21:26Coding/Python

728x90

arr = [2,2,3,5,4,4,5] 를 주어지면,

answer = [2,3,5,4,5] 처럼 연속되는 중복만 제외시켜서 출력되게 만드는게 문제. 



생각나는대로 짜본 코드

1
2
3
4
5
6
7
8
9
def solution(arr):
    answer = []
    temp = arr[0]
    answer.append(temp)
    for i in arr :
        if temp != i :
            answer.append(i)
        temp = i
    return answer
cs

arr의 0번 인덱스는 중복이 안되면 당연히 answer에 들어가고,

중복이 되더라도 answer에 들어가기 때문에 무조건 answer에 들어가게된다.




이건 비슷한 예제보고 공부 더 해봐야 할듯.




고수의 코드로 공부....

1
2
3
4
5
6
7
8
9
10
def solution(arr):
    answer = []
    for i in arr :
        if answer[-1:] != [i] :
            answer.append(i)
    return answer
 
arr = [1133011]
print(solution(arr))
 
cs

4번줄이 핵심 

answer[-1:]을 하는 이유 => .append(i)로 answer배열에 추가 할때, 맨뒤로 입력되기 때문.(계속해서 최근에 입력한 값을 가져옴)

answer[-1]이 아니고, answer[-1:]인 이유 => answer[-1]은 9 처럼 배열 안의 값을 가져오지만,

answer[-1:]의 경우 [9] 처럼 배열 안의 값을 배열로 가져온다.

배열로 가져와서 좋은 이유 => 처음 값을 비교할때 answer[-1]은 빈 값이라 out of range에러가 뜨지만,

answer[-1:] 은 [] 처럼 빈 배열을 가져와서 에러를 방지한다.

이 때문에 비교대상인 i는 [i] 처럼 배열로 만들어줘야 한다.










728x90