문제
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);
}
}
}
'Problem Solving > SWEA' 카테고리의 다른 글
[SWEA] 5688. 세제곱근을 찾아라 (0) | 2020.02.29 |
---|---|
[SWEA] 8840. 아바바바 (0) | 2020.02.29 |
[SWEA] 7193. 승현이의 수학공부 (0) | 2020.02.29 |
[SWEA] 4579. 세상의 모든 팰린드롬 2 (0) | 2020.02.29 |
[SWEA] 6781. 삼삼 트리플 게임 (0) | 2020.02.28 |
댓글