반응형
```
백준 2921번 도미노 JAVA 구현해보기
```
이번 글을 통해 배워갈 내용
- 백준 번호 번 풀이
https://www.acmicpc.net/problem/2921
백준 2921번 도미노는
난이도 브론즈 등급의 문제로서
크기가 N개인 도미노 세트를 입력받을 때
도미노의 점 개수를 출력해주면 되는 문제입니다.
예를 들어 크기가 2면
0 0
0 1
1 1
0 2
1 2
2 2
이기때문에 점의 개수는 12개입니다.
30분 정도 위에 링크를 방문하셔서 풀어보시고
안 풀리시는 경우에만 아래 해답을 봐주시면 감사하겠습니다.
크기가 3이라면
0 0 0 0
0 1 2 3
1 1 1
1 2 3
2 2
2 3
3
3
의 합이고
4면
0 0 0 0 0
0 1 2 3 4
1 1 1 1
1 2 3 4
2 2 2
2 3 4
3 3
3 4
4
4
의 합입니다.
N 개로 증가하게 되면
0 * (1+N)
(N+1)*(N+0)/2
1 * (N)
(N) * (N + 1) / 2
2 * (N)
(N-1) * (N + 2) / 2
...
1 * (N)
2 * (N + 0) / 2
이기 때문에 반복문을 돌려서 더해주면 됩니다.
sum += (i) * (n-i+1)
sum += (i+n) * (n-i+1)/2
에서 두 식에 공통된 원소를 합해서 아래의 공식이 나옵니다.
sum += (3 * i+n) * (n-i+1)/2
전체 코드는 아래와 같습니다.
package com.bj;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
static final BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
public static void main(String[] args) throws IOException {
int n = Integer.parseInt(br.readLine());
int sum = 0;
for (int i = 0; i <= n; i++) {
sum += (3 * i + n) * (n - i + 1) / 2;
}
System.out.print(sum);
}
}
//codemasterkimc.tistory.com [김씨의 코딩 스토리]
읽어주셔서 감사합니다
무엇인가 얻어가셨기를 바라며
오늘도 즐거운 코딩 하시길 바랍니다 ~ :)
반응형
'Java > Java 알고리즘' 카테고리의 다른 글
백준 2740번 행렬곱셈 JAVA 구현해보기 (0) | 2022.04.17 |
---|---|
백준 10178번 할로윈의 사탕 JAVA 구현해보기 (0) | 2022.04.17 |
백준 2959번 거북이 JAVA 구현해보기 (0) | 2022.04.17 |
백준 9950번 Rectangles JAVA 구현해보기 (0) | 2022.03.31 |
백준 9158번 Super Star JAVA 구현해보기 (0) | 2022.03.30 |