코딩하는 문과생
[알고리즘 풀이][Java] 프로그래머스, 타일 장식물 본문
[문제 설명]
그림에서 타일에 적힌 수는 각 타일의 한 변의 길이를 나타낸다. 타일 장식물을 구성하는 정사각형 타일 한 변의 길이를 안쪽 타일부터 시작하여 차례로 적으면 다음과 같다.
[1, 1, 2, 3, 5, 8, .]
지수는 문득 이러한 타일들로 구성되는 큰 직사각형의 둘레가 궁금해졌다. 예를 들어, 처음 다섯 개의 타일이 구성하는 직사각형(위에서 빨간색으로 표시한 직사각형)의 둘레는 26이다.
타일의 개수 N이 주어질 때, N개의 타일로 구성된 직사각형의 둘레를 return 하도록 solution 함수를 작성하시오.
[제한 사항]
- N은 1 이상 80 이하인 자연수이다.
[내가 작성한 풀이 - 효율성 에러]
import java.util.*;
class Solution {
public long solution(int N) {
long answer = 0;
List<Integer> list = new ArrayList<>();
list.add(1);
list.add(1);
for(int i=0; i < N-1; i++){
list.add(list.get(i) + list.get(i+1));
}
answer = list.get(N-1) * 2 + list.get(N) * 2;
return answer;
}
}
정확도는 다 맞았지만, 효율성에서 에러...
[다시 작성한 풀이]
class Solution {
public long solution(int N) {
long[] fibo = new long[N];
fibo[0] = 1;
fibo[1] = 1;
for(int i=2; i<fibo.length; i++){
fibo[i] = fibo[i-2] + fibo[i-1];
}
return fibo[N-1]*4+fibo[N-2]*2;
}
}
다른 사람의 풀이는 제한사항의 길이만큼 먼저 배열을 선언해서 진행하는 경우도 있었다.
[배운 점]
- List를 쓰기 위해서는 java.util.*; 를 import해야한다.
- List 메소드에는 add(), remove(), get(), size() 가 있다.
- 다른 사람의 풀이에는 static 메소드를 하나 정의해서 푼 경우도 있었다.
'프로그래밍 > 알고리즘 풀이' 카테고리의 다른 글
[알고리즘 풀이][Java] 프로그래머스, 가장 큰 수 (0) | 2020.01.27 |
---|---|
[알고리즘 풀이][Java] 프로그래머스, K번째 수 (0) | 2020.01.27 |
[알고리즘 풀이][Python] 프로그래머스 'H-Index' (0) | 2019.11.20 |
[알고리즘 풀이][python] 프로그래머스 '네트워크' (0) | 2019.11.19 |
[알고리즘 풀이][python] 프로그래머스 '가장 큰 수' (0) | 2019.11.19 |