Java/Java 알고리즘

백준 2721번 삼각수의 합 JAVA 구현해보기

kimc 2022. 7. 9. 23:29

```

백준 2721번 삼각수의 합 JAVA 구현해보기

```

이번 글을 통해 배워갈 내용

  1. 백준 2721번 풀이

https://www.acmicpc.net/problem/2721

 

2721번: 삼각수의 합

n번째 삼각수, T(n)은 1부터 n까지의 합이다. T(n) = 1 + ... + n. 이것은 삼각형 모양으로 표현할 수 있다. 아래 그림은 T(4)를 나타낸 것이다. 다음과 같은 식을 통해 가중치를 부여한 삼각수의 합을 구

www.acmicpc.net

 

백준 2721번 삼각수의 합은

 

브론즈 등급의 문제로서

 

W(n) = 1 * T(1 + 1) + 2 * T(2 + 1) + 3 * T(3 + 1)... n * T(n + 1)

T(n) = (n) * (n+1) / 2

일 때

 

W(n)을 구해주면 되는 문제입니다.


30분 정도 위에 링크를 방문하셔서 풀어보시고

안 풀리시는 경우에만 아래 해답을 봐주시면 감사하겠습니다.


입력과 출력을 나누고

List로 테스트 케이스만큼 입력받은 수들을

Stream으로 돌면서 답을 구해서

스트링 빌더에 넣은 다음

결괏값을 출력했습니다.

 

만약 실무였고 필요시

최대 값인 N을 구해서

N미만에서 정해진 수만큼 미리 결과값을 구해서

속도 향상을 할 것 같습니다.

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.IntStream;

public class Main {

    public static void main(String[] args) throws IOException {
        final BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        final int testCase = Integer.parseInt(br.readLine());
        List<Integer> inputs = new ArrayList<>();
        for (int i = 0; i < testCase; i++) {
            inputs.add(Integer.parseInt(br.readLine()));
        }
        System.out.print(solution(inputs));
    }

    private static String solution(List<Integer> inputs) {
        StringBuilder ans = new StringBuilder();

        inputs.stream().forEach(n -> {
            ans.append(IntStream.rangeClosed(1, n)
                            .map(k -> k * (k + 1) * (k + 2) / 2)
                            .sum())
                    .append("\n");
        });
        ans.setLength(ans.length() - 1);
        return ans.toString();
    }
}

// https://codemasterkimc.tistory.com

 

 

읽어주셔서 감사합니다

 

무엇인가 얻어가셨기를 바라며

 

오늘도 즐거운 코딩 하시길 바랍니다 ~ :)

 


 

728x90