-
17. 같은 숫자는 싫어코딩 테스트/Level 1 2019. 10. 15. 23:07반응형
https://programmers.co.kr/learn/courses/30/lessons/12906
파이썬
기본적인 풀이입니다.
def solution(arr): answer = [] for i in range(len(arr) - 1): if arr[i] != arr[i+1]: answer.append(arr[i]) answer.append(arr[-1]) return answer
테스트 1 〉 통과 (107.83ms, 997MB) 테스트 2 〉 통과 (107.53ms, 996MB) 테스트 3 〉 통과 (108.24ms, 997MB) 테스트 4 〉 통과 (107.57ms, 998MB)
리스트 컴프리헨션으로 줄여 쓸 수 있습니다. 나쁘진 않은 것 같습니다.
def solution(arr): answer = [arr[i] for i in range(len(arr) - 1) if arr[i] != arr[i+1]] answer.append(arr[-1]) return answer
테스트 1 〉 통과 (102.06ms, 994MB) 테스트 2 〉 통과 (102.20ms, 994MB) 테스트 3 〉 통과 (108.16ms, 994MB) 테스트 4 〉 통과 (102.38ms, 995MB)
한 줄의 로망
def solution(arr): return [arr[i] for i in range(len(arr) - 1) if arr[i] != arr[i + 1]] + [arr[-1]]
테스트 1 〉 통과 (110.50ms, 994MB) 테스트 2 〉 통과 (110.02ms, 994MB) 테스트 3 〉 통과 (103.85ms, 994MB) 테스트 4 〉 통과 (104.58ms, 995MB)
자바스크립트
코드를 한 줄 줄이기 위해 for문의 인덱스를 수정했습니다.
function solution3(arr) { let answer = [arr[0]] for (let i = 1; i < arr.length; i++) { if (arr[i-1] != arr[i]) { answer.push(arr[i]) } } return answer }
자바스크립트의 필터에선 index가 됩니다. @,.@
좋아요 하나 남겼습니다. 제가 푼 게 아닙니다.
function solution(arr) { return arr.filter((val, index) => val != arr[index + 1]); }
자바
마음에 드는 풀이는 아닙니다...
ArrayList가 거추장스럽게 느껴집니다.
자바에서 원시 자료형의 존재의 이유는 잘(?) 알고 있습니다만.....
형이나 컬랙션 변환을 할 때 빡치는 기분이 슬금슬금 올라오는 건.....
저만 그런 건 아니겠지요?import java.util.*; class Solution { public int[] solution(int[] arr) { ArrayList<Integer> temp = new ArrayList<>(); temp.add(arr[0]); for (int i = 1; i < arr.length; i++) { if (arr[i - 1] != arr[i]) temp.add(arr[i]); } return temp.stream().mapToInt(i -> i).toArray(); } }
golang
func solution(arr []int) []int { rtn := []int{arr[0]} for _, n := range arr { if rtn[len(rtn)-1] != n { rtn = append(rtn, n) } } return rtn }
반응형