본문 바로가기
Problem Solving/SWEA

[SWEA] 3408. 세가지 합 구하기

by 테리는당근을좋아해 2020. 2. 29.

문제

N을 입력 받아 다음의 세 가지 합을 구하는 프로그램을 작성하라.

S1 = 양의 정수 중에서 작은 순서대로 N개의 합.

S2 = 양의 정수 중 홀수인 것들 중에서 작은 순서대로 N개의 합.

S3= 양의 정수 중 짝수인 것들 중에서 작은 순서대로 N개의 합.

예를 들어 N = 5의 입력이 들어왔을 경우,

S1 = 1 + 2 + 3 + 4 + 5,

S2 = 1 + 3 + 5 + 7 + 9,

S3 = 2 + 4 + 6 + 8 + 10 이다.

 

풀이방법

n이 최대 10^9까지 입력되므로 반복문을 사용할 경우 시간초과가 발생한다.

 

따라서 n이 입력되었을 때, 출력값을 바로 계산할 수 있는 규칙을 찾아야한다.

 

n이 주어졌을 때, S1, S2, S3 각각은 아래와 같은 규칙을 가지고 있다.

 

n개의 짝수의 합(S3) : n * (n-1)

 

n개의 홀수의 합(S2) : {n * (n-1)} - n

 

n개의 숫자의 합(S1) : {n * (n-1)} / 2

 

소스코드

package samsung;

import java.util.*;

public class s_3408 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int tc = sc.nextInt();
		
		for(int t = 1; t <= tc; t++) {
			long n = sc.nextInt();
			long s = n * (n + 1);
			System.out.println("#" + t + " " + (s/2) + " " + (s-n) + " " + s);
		}
	}
}

 

댓글