코딩 테스트/Level 1
17. 같은 숫자는 싫어
컴닥
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
}
반응형