Java/Java 알고리즘

백준 2921번 도미노 JAVA 구현해보기

kimc 2022. 4. 17. 01:03

```

백준 2921번 도미노 JAVA 구현해보기

```

이번 글을 통해 배워갈 내용

  1.  백준 번호 번 풀이

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

 

2921번: 도미노

도미노는 여러 종류의 타일 게임에서 사용하는 조각이다. 도미노 조각은 두 칸으로 이루어져 있다. 각 칸에는 점이 찍혀있는데, 점이 안 찍혀져 있을 수도 있다. 점의 개수는 세트의 크기에 의

www.acmicpc.net

 

 

 

백준 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 [김씨의 코딩 스토리]

 

 

읽어주셔서 감사합니다

 

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

 

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

 


 

728x90