Baekjoon - 9461

Tadap·2023년 10월 18일
0

Baekjoon

목록 보기
56/94

문제

Solved.ac Class3++

1차시도

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);
	}
}

실패

2차시도

if (max > 10) {
			padobanSequence = new int[max + 1];
		} else {
			padobanSequence = new int[10];
		} 

만약 max가 3, 4라면 처음 init시 데이터가 들어가지 않아서 문제가 생겨서 그런것으로 판단했다.

실패

3차시도

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더 빠르다.

ToKotlin

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회 오류는

  1. StringBuilder 를 import하지 않음
  2. LongArray가 아닌 IntArray를 사용하여 생긴 오류

기타 - 2023.10.17은 건강상태 이슈로 쉬운 문제를 풀었고 이에 블로그에는 올리지 않음(스트릭은 유지)

0개의 댓글