Solved.ac Class3++
public class Main {
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int size = Integer.parseInt(br.readLine());
int max = 0;
Queue<Integer> targetQueue = new LinkedList<>();
for (int i = 0; i < size; i++) {
int target = Integer.parseInt(br.readLine());
targetQueue.add(target);
if (target > max) {
max = target;
}
}
int[] padobanSequence = new int[max + 1];
padobanSequence[1] = 1;
padobanSequence[2] = 1;
padobanSequence[3] = 1;
padobanSequence[4] = 2;
padobanSequence[5] = 2;
padobanSequence[6] = 3;
padobanSequence[7] = 4;
padobanSequence[8] = 5;
padobanSequence[9] = 7;
padobanSequence[10] = 9;
for (int i = 11; i < max + 1; i++) {
padobanSequence[i] = padobanSequence[i - 1] + padobanSequence[i - 5];
}
for (int i = 0; i < size; i++) {
sb.append(padobanSequence[targetQueue.remove()]).append("\n");
}
System.out.println(sb);
}
}
실패
if (max > 10) {
padobanSequence = new int[max + 1];
} else {
padobanSequence = new int[10];
}
만약 max가 3, 4라면 처음 init시 데이터가 들어가지 않아서 문제가 생겨서 그런것으로 판단했다.
실패
public class Main {
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int size = Integer.parseInt(br.readLine());
int max = 0;
Queue<Integer> targetQueue = new LinkedList<>();
for (int i = 0; i < size; i++) {
int target = Integer.parseInt(br.readLine());
targetQueue.add(target);
if (target > max) {
max = target;
}
}
long[] padobanSequence = null;
if (max > 10) {
padobanSequence = new long[max + 1];
} else {
padobanSequence = new long[10];
}
padobanSequence[1] = 1;
padobanSequence[2] = 1;
padobanSequence[3] = 1;
padobanSequence[4] = 2;
padobanSequence[5] = 2;
padobanSequence[6] = 3;
padobanSequence[7] = 4;
padobanSequence[8] = 5;
padobanSequence[9] = 7;
padobanSequence[10] = 9;
for (int i = 11; i < max + 1; i++) {
padobanSequence[i] = padobanSequence[i - 1] + padobanSequence[i - 5];
}
for (int i = 0; i < size; i++) {
sb.append(padobanSequence[targetQueue.remove()]).append("\n");
}
System.out.println(sb);
}
}
데이터 사이즈가 마지막엔 888,855,064,897 이기 때문에 int형에 담을 수 없다 따라서 long에 담았다.
성공
public class Main {
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int size = Integer.parseInt(br.readLine());
long[] padobanSequence = new long[101];
padobanSequence[1] = 1;
padobanSequence[2] = 1;
padobanSequence[3] = 1;
padobanSequence[4] = 2;
padobanSequence[5] = 2;
padobanSequence[6] = 3;
padobanSequence[7] = 4;
padobanSequence[8] = 5;
padobanSequence[9] = 7;
padobanSequence[10] = 9;
for (int i = 11; i < 101; i++) {
padobanSequence[i] = padobanSequence[i - 1] + padobanSequence[i - 5];
}
for (int i = 0; i < size; i++) {
sb.append(padobanSequence[Integer.parseInt(br.readLine())]).append("\n");
}
System.out.println(sb);
}
}
이렇게 그냥 깡으로 만들어 두고 하는것과 시간 차이가 궁금했다.
깡으로 만드는게 4ms더 빠르다.
fun main() {
val size = readln().toInt()
val sb = StringBuilder()
val padobanSequence = makePadobanSequence()
for (i in 0..<size) {
sb.append(padobanSequence[readln().toInt()]).append("\n")
}
print(sb)
}
fun makePadobanSequence(): LongArray {
val padobanSequence = LongArray(101)
padobanSequence[1] = 1;
padobanSequence[2] = 1;
padobanSequence[3] = 1;
padobanSequence[4] = 2;
padobanSequence[5] = 2;
padobanSequence[6] = 3;
padobanSequence[7] = 4;
padobanSequence[8] = 5;
padobanSequence[9] = 7;
padobanSequence[10] = 9;
for (i in 11..<101) {
padobanSequence[i] = padobanSequence[i - 1] + padobanSequence[i - 5]
}
return padobanSequence
}
성공
코틀린 2회 오류는
기타 - 2023.10.17은 건강상태 이슈로 쉬운 문제를 풀었고 이에 블로그에는 올리지 않음(스트릭은 유지)