[Programmers/Level 1] 같은 숫자는 싫어
2020. 6. 15. 17:59ㆍ코딩테스트 준비/Programmers
https://programmers.co.kr/learn/courses/30/lessons/12906
1차 시도
def solution(arr):
for i in range(len(arr)-2,-1,-1):
if arr[i] == arr[i+1]: del(arr[i])
return arr
더보기
채점을 시작합니다.
정확성 테스트
테스트 1 〉 | 통과 (0.04ms, 10.7MB) |
테스트 2 〉 | 통과 (0.05ms, 10.7MB) |
테스트 3 〉 | 통과 (0.05ms, 10.7MB) |
테스트 4 〉 | 통과 (0.05ms, 10.7MB) |
테스트 5 〉 | 통과 (0.05ms, 10.7MB) |
테스트 6 〉 | 통과 (0.05ms, 10.7MB) |
테스트 7 〉 | 통과 (0.05ms, 10.7MB) |
테스트 8 〉 | 통과 (0.04ms, 10.7MB) |
테스트 9 〉 | 통과 (0.05ms, 10.6MB) |
테스트 10 〉 | 통과 (0.05ms, 10.7MB) |
테스트 11 〉 | 통과 (0.07ms, 10.7MB) |
테스트 12 〉 | 통과 (0.05ms, 10.8MB) |
테스트 13 〉 | 통과 (0.05ms, 10.7MB) |
테스트 14 〉 | 통과 (0.05ms, 10.7MB) |
테스트 15 〉 | 통과 (0.05ms, 10.8MB) |
테스트 16 〉 | 통과 (0.05ms, 10.7MB) |
테스트 17 〉 | 통과 (0.04ms, 10.8MB) |
효율성 테스트
테스트 1 〉 | 실패 (시간 초과) |
테스트 2 〉 | 실패 (시간 초과) |
테스트 3 〉 | 실패 (시간 초과) |
테스트 4 〉 | 실패 (시간 초과) |
채점 결과
정확성: 71.9
효율성: 0.0
합계: 71.9 / 100.0
이건 효율이 개똥같나보다
2차 시도
def solution(arr):
answer = []
for i in range(len(arr)):
if [arr[i]] != arr[i+1:i+2]: answer.append(arr[i])
return answer
더보기
정확성 테스트
테스트 1 〉 | 통과 (0.04ms, 10.6MB) |
테스트 2 〉 | 통과 (0.06ms, 10.7MB) |
테스트 3 〉 | 통과 (0.06ms, 10.7MB) |
테스트 4 〉 | 통과 (0.06ms, 10.7MB) |
테스트 5 〉 | 통과 (0.06ms, 10.7MB) |
테스트 6 〉 | 통과 (0.06ms, 10.7MB) |
테스트 7 〉 | 통과 (0.06ms, 10.7MB) |
테스트 8 〉 | 통과 (0.06ms, 10.6MB) |
테스트 9 〉 | 통과 (0.06ms, 10.8MB) |
테스트 10 〉 | 통과 (0.09ms, 10.6MB) |
테스트 11 〉 | 통과 (0.06ms, 10.7MB) |
테스트 12 〉 | 통과 (0.05ms, 10.8MB) |
테스트 13 〉 | 통과 (0.06ms, 10.7MB) |
테스트 14 〉 | 통과 (0.06ms, 10.7MB) |
테스트 15 〉 | 통과 (0.06ms, 10.8MB) |
테스트 16 〉 | 통과 (0.06ms, 10.8MB) |
테스트 17 〉 | 통과 (0.04ms, 10.7MB) |
효율성 테스트
테스트 1 〉 | 통과 (217.56ms, 997MB) |
테스트 2 〉 | 통과 (217.02ms, 996MB) |
테스트 3 〉 | 통과 (217.07ms, 997MB) |
테스트 4 〉 | 통과 (217.76ms, 995MB) |
채점 결과
정확성: 71.9
효율성: 28.1
합계: 100.0 / 100.0
왜 del로 지우는것보다 하나씩 새로 넣는게 더 효율적인건지 알아봐야겠다
알게된 것
arr[i] != arr[i+1]로 하면 index out of range 에러가 뜨지만 [arr[i]] != arr[i+1:i+2]로 하면 양 옆 모두 리스트고, 범위 넘어가면 걍 빈리스트기 때문에 에러가 뜨지 않는다!
다른 분 코드
def solution(s):
a = []
for i in s:
if a[-1:] == [i]: continue
a.append(i)
return a
a[-1:] -> a의 마지막 원소
즉 최근에 넣은 원소와 지금 for문 돌고있는 배열의 원소가 같은지 비교하는 것.
밑의 테스트 결과를 보면 알 수 있지만 이게 더 효율이 좋다.. 근데 정확성 테스트는 내거가 더 빠르다 무슨차이징
더보기
정확성 테스트
테스트 1 〉 | 통과 (0.05ms, 10.8MB) |
테스트 2 〉 | 통과 (0.05ms, 10.8MB) |
테스트 3 〉 | 통과 (0.06ms, 10.7MB) |
테스트 4 〉 | 통과 (0.05ms, 10.7MB) |
테스트 5 〉 | 통과 (0.05ms, 10.8MB) |
테스트 6 〉 | 통과 (0.05ms, 10.8MB) |
테스트 7 〉 | 통과 (0.05ms, 10.7MB) |
테스트 8 〉 | 통과 (0.05ms, 10.7MB) |
테스트 9 〉 | 통과 (0.06ms, 10.8MB) |
테스트 10 〉 | 통과 (0.05ms, 10.8MB) |
테스트 11 〉 | 통과 (0.05ms, 10.7MB) |
테스트 12 〉 | 통과 (0.05ms, 10.8MB) |
테스트 13 〉 | 통과 (0.05ms, 10.6MB) |
테스트 14 〉 | 통과 (0.05ms, 10.8MB) |
테스트 15 〉 | 통과 (0.05ms, 10.7MB) |
테스트 16 〉 | 통과 (0.06ms, 10.9MB) |
테스트 17 〉 | 통과 (0.04ms, 10.7MB) |
효율성 테스트
테스트 1 〉 | 통과 (145.59ms, 996MB) |
테스트 2 〉 | 통과 (145.47ms, 997MB) |
테스트 3 〉 | 통과 (145.60ms, 997MB) |
테스트 4 〉 | 통과 (137.83ms, 997MB) |
채점 결과
정확성: 71.9
효율성: 28.1
합계: 100.0 / 100.0
'코딩테스트 준비 > Programmers' 카테고리의 다른 글
[Programmers/Level 1] 나누어 떨어지는 숫자 배열 (0) | 2020.06.16 |
---|---|
[Programmers/Level 1] 역순 정렬하기 (0) | 2020.06.16 |
[Programmers/Level 1] 가운데 글자 가져오기 (0) | 2020.06.15 |
[Programmers/Level 1] 2016년 (0) | 2020.06.15 |
[Programmers/Level 1] 체육복 (0) | 2020.06.15 |