[Bronze III] 도미노 - 2921
성능 요약
메모리: 11468 KB, 시간: 88 ms
분류
수학(math)
문제 설명
도미노는 여러 종류의 타일 게임에서 사용하는 조각이다. 도미노 조각은 두 칸으로 이루어져 있다. 각 칸에는 점이 찍혀있는데, 점이 안 찍혀져 있을 수도 있다. 점의 개수는 세트의 크기에 의해서 결정된다. 세트의 크기가 N인 도미노 세트에서 점의 개수는 0보다 크거나 같고, N보다 작거나 같다. 두 도미노에 찍혀잇는 점의 개수가 같다면, 두 도미노는 동일한 것이다. 예를 들어, 점이 2개와 8개 찍혀있는 도미노는 8개와 2개 찍혀있는 도미노와 같은 도미노이다.
크기가 N인 도미노 세트는 N 또는 그보다 작거나 같은 점을 포함하는 가능한 도미노를 모두 포함하고 있고, 각 도미노는 중복되지 않는다. 다음은 크기가 2인 도미노 세트이다.
N을 입력받은 뒤, 크기가 N인 도미노 세트에는 점이 몇 개 찍혀 있는지 구하는 프로그램을 작성하시오.
입력
첫째 줄에 도미노 세트의 크기 N (1 ≤ N ≤ 1000)이 주어진다.
출력
크기가 N인 도미노 세트에 찍혀 있는 점의 개수를 출력한다.
풀이방법
문제의 규칙을 찾으면 쉽게 해결할 수 있다. 규칙을 찾기 위해서 N이 1~4일 때까지 천천히 그려보았더니 찾을 수 있었다.
N이 1일 경우 : (1+0) + (1+1)
N이 2일 경우 : (1+0) + (1+1) + (2+0) + (2+1) + (2+2)
N이 3일 경우 : (1+0) + (1+1) + (2+0) + (2+1) + (2+2) + (3+0) + (3+1) + (3+2) + (3+3)
이 예시들의 갯수 분포를 보면 글로 표현이 잘 안되지만, 해당 숫자들까지 1씩 누적해서 더해가는 것을 알 수 있다.
코드를 보면 쉽게 이해할 수 있을 것이다.
예를 들어 N이 2라면, 2는 디폴트 값으로 두고 0~2까지 더하여 총합을 구한다. (2+0) + (2+1) + (2+2)
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
int cnt = 0;
for(int i=1;i<=n;i++){
for(int j=0;j<=i;j++){
cnt += (i+j);
}
}
System.out.print(cnt);
}
}
'알고리즘' 카테고리의 다른 글
[SWEA] 1209. [s/w 문제해결 기본] 2일차 - Sum : JAVA (3) | 2023.01.16 |
---|---|
[SWEA] 1961. 숫자 배열 회전 : JAVA (3) | 2023.01.15 |
[SWEA] 1974. 스도쿠 검증 : JAVA (2) | 2023.01.13 |
[SWEA] 1204. [s/w 문제해결 기본] 1일차 - 최빈수 구하기 : JAVA (3) | 2023.01.12 |
[Bronze III] 이게 분수? - 2863 (구현) (3) | 2023.01.11 |