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

이번 글을 통해 배워갈 내용
- 백준 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
'Java > Java 알고리즘' 카테고리의 다른 글
| 백준 1312번 소수점 아래 N번째 수 JAVA 구현해보기 (0) | 2022.07.14 |
|---|---|
| 백준 2556번 별 찍기 - 14 JAVA 구현해보기 (0) | 2022.07.10 |
| 백준 23809번 골뱅이 찍기 - K 모양 골뱅이 텍스트 JAVA 구현해보기 (0) | 2022.07.09 |
| 백준 23810번 골뱅이 찍기 - 뒤집힌 ㅋ JAVA 구현해보기 (1) | 2022.07.09 |
| 백준 23811번 골뱅이 찍기 - ㅌ JAVA 구현해보기 (0) | 2022.07.09 |