-
[JAVA] SWEA Professional 구간 합알고리즘 공부/문제 풀이 2021. 9. 28. 20:50
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
import java.util.*; import java.io.*; public class Solution { static long[] memo; static int[] sum; // 1 ~ i 까지의 합 public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int T = Integer.parseInt(br.readLine()); sum = new int[10]; sum[1] = 1; for(int i=2;i<10;i++) sum[i] = i + sum[i-1]; memo = new long[16]; memo[1] = sum[9]; for(int i=2; i<=15; i++) memo[i] = memo[1] * (long)Math.pow(10, i-1) + memo[i-1]*10; for(int t=1;t<=T;t++) { StringTokenizer st = new StringTokenizer(br.readLine()); long a = Long.parseLong(st.nextToken()); long b = Long.parseLong(st.nextToken()); System.out.println("#"+t+" "+(solve(b)-solve(a-1))); } } public static long solve(long num) { if(num<0) return 0; if(num<10) return sum[(int)num]; String str = String.valueOf(num); int z = str.length()-1; int x = str.charAt(0) - '0'; long y = Long.parseLong(str.substring(1)); return sum[x-1]* (long) Math.pow(10, z) + x*memo[z] + x*(y+1) + solve(y); } }
'알고리즘 공부 > 문제 풀이' 카테고리의 다른 글
[JAVA] 백준 20056 마법사 상어와 파이어 볼 (0) 2021.09.29 [JAVA] 백준 1194 달이 차오른다, 가자 (0) 2021.09.29 [JAVA] 백준 1701 Cubeditor (0) 2021.09.28 [JAVA] 백준 1707 이분 그래프 (0) 2021.09.28 [JAVA] 백준 9660 돌 게임 6 (0) 2021.09.27