Coding/Python
같은 숫자 찾기
떡빵
2018. 11. 3. 21:26
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 = [1, 1, 3, 3, 0, 1, 1] 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