백준

백준1292를 풀어보았다☆ with java

next2you 2025. 1. 18. 17:06

 


백준 1292 쉽게 푸는 문제를 풀어보았습니다.

 

문제를 읽자마자 떠오르는 생각은 12233344445555....이런 수열을 배열에 넣고 해당 구간의 값을 다 더해서 출력하는 것 이였습니다. 

하지만 이건 1000크기의 배열을 사용하는 것이였습니다. 어차피 내가 필요한 것은 특정 구간의 값인데 사용하지 않는 구간에 전부 값을 채워넣는 것은 메모리 낭비라고 생각했습니다. (사실 잘 모름..(┬┬﹏┬┬))

 

따라서 위와 같은 방법으로 코드를 짰습니다.  <아래는 코드>

 

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int start =sc.nextInt();
		int end = sc.nextInt();
		
		start = method(start-1);
		end = method(end);
		System.out.println(end -start);

	}
	public static int method(int num) {
		int count=0;
		int sum=0;
		for (int i = 1;; i++) {
			count += i;
			sum = sum + i*i;
			
			if(count == num) {
				return sum;
			}
			else if(count>num) {
				int result = sum-(count-num)*i;
				return result;
			}
		}
	}
}