programmers. 타일 장식물
문제 자체는 어렵지 않았습니다. 원소가 4개 이상이면 answer은 제일 마지막에서 앞으로 순서대로 3배, 2배, 2배, 1배 한 값들을 더해주면 구할 수 있거든요.
다만 효율성 테스트에서 실패가 발생했었는데요. 그래서 코드를 조금씩 수정해봤는데 결국은 해결방법은 형변환이었습니다 위 과정을 다 정수(Integer)타입으로 계산을 했었는데 실제 반환값이 long이었거든요. 형변환 과정에서 좀 더 시간이 걸렸던 것 같아요. 실제로 답을 제출할 때 2ms에서 실패가 떴었는데 계산과정 내에서 long타입으로 하면 1ms로 시간이 줄어들 수 있었거든요. 반환값 타입이 제가 계산한 것과 다를 때는 형변환이 필요한지 유무도 고려해야할 것 같네요.
class Solution {
public long solution(int N) {
LinkedList<Long> queue = new LinkedList<>(Arrays.asList(1L, 1L, 2L, 3L));
if(N < 4) {
switch (N){
case 1:
return 4L;
case 2:
return 6L;
case 3:
return 10L;
}
}
int count = 4;
while(count < N) {
queue.poll();
long first = queue.pollLast();
long second = queue.pollLast();
queue.offer(second);
queue.offer(first);
queue.offer(first + second);
count++;
}
return queue.poll() + queue.poll() * 2 + queue.poll() * 2 + queue.poll() * 3;
}
}
'Algorithm > problem solving' 카테고리의 다른 글
Today's Algorithm(2019-01-04) (0) | 2019.01.05 |
---|---|
Today's Algorithm(2019-01-03) (0) | 2019.01.04 |
Today's Algorithm(2019-01-01) (0) | 2019.01.01 |
Today's Algorithm(2018-12-31) (1) | 2018.12.31 |
Today's Algorithm(2018-12-30) (0) | 2018.12.30 |