[JAVA] SWEA 8104 - 조 만들기

hyng·2022년 2월 23일
0

SWEA

목록 보기
40/78

Solution

단순하게 배열에 값들을 저장하면서 정답을 구해주는 식으로도 풀 수 있지만,
규칙성을 찾아서 풀 경우 더 간단하게 풀 수 있다.

N=10, K=20일 때 1번 조의 팀원들의 점수는 아래와 같다.

번호팀원의 점수
11
240
341
480
581
6120
7121
8160
9161
10200

번호 1의 점수 1은 0 * K, 번호 2의 점수 40은 2 * K, 번호 3의 점수 41은 2 * K + 1 ...
이런식으로 홀수번째의 팀원의 점수는 (i - 1) * K + 1, 짝수번째 팀원의 점수는 i * K 라는것을 알수 있다.

그리고 N이 짝수일때, 홀수일때도 값이 달라진다.

  1. N이 짝수일 때
    N=2, K=3일 때
12
12
43
56
= 10= 10
  1. N이 홀수일 때
    N=3, K=3일 때
123
123
654
789
= 14= 15= 16

즉, N이 짝수일 때는 팀원의 점수 합이 모두 같고 홀수일 때는 1씩 증가한다.

Code

import java.util.*;
class Solution
{
	public static void main(String args[]) throws Exception
	{
       Scanner sc = new Scanner(System.in);
        StringBuffer sb = new StringBuffer();


        int T = sc.nextInt();
        for (int tc = 1; tc <= T; tc++) {
            sb.append("#").append(tc).append(" ");

            int N = sc.nextInt();
            int K = sc.nextInt();

            int sum = 0;
            for(int i=1; i<=N; i++){

                if(i % 2 == 0){
                    //짝수
                    sum += (i * K);
                }else{
                    //홀수
                    sum += ((i-1) * K) + 1;
                }
            }
            for(int i=0; i<K; i++){
                if(N % 2 == 0){
                    sb.append(sum).append(" ");
                }else{
                    sb.append(sum + i).append(" ");
                }
            }
            sb.append("\n");
        }
        System.out.println(sb);
    }
}
profile
공부하고 알게 된 내용을 기록하는 블로그

0개의 댓글