같은 숫자 찾기
2018. 11. 3. 21:26ㆍCoding/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 = [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
'Coding > Python' 카테고리의 다른 글
문자열 내의 숫자 여부 확인 (0) | 2018.11.05 |
---|---|
문자열 내 p와 y의 개수 구하기 (0) | 2018.11.05 |
요일 구하기 (0) | 2018.11.03 |
[Python]Atom에디터 UnicodeEncodeError: 'cp949' codec can't encode character (0) | 2018.08.10 |
3-3. 크롤링한 데이터를 json 파일 만들기 (3) | 2018.06.10 |