《노 땡스!》 는 3부터 35까지의 정수가 쓰인 수 카드를 이용하여 플레이할 수 있는 보드게임입니다. 수 카드를 경매를 통해서 낙찰받으며, 최종적으로 가지고 있는 수 카드를 이용하여 다음과 같이 점수를 계산합니다.
예를 들어 가지고 있는 수 카드가 6, 7, 10, 12, 13, 14, 15, 20, 21, 22라면, [6,7], [10], [12,13,14,15], [20,21,22]의 4개의 그룹으로 나뉘며, 점수는 6+10+12+20=48점입니다.
가지고 있는 수 카드가 주어졌을 때 점수를 계산하는 프로그램을 작성하세요.
첫 번째 줄에 수 카드의 개수 N이 주어집니다.
두 번째 줄에 N개의 카드에 적힌 정수 가 공백으로 구분되어 오름차순으로 주어집니다.
첫 번째 줄에 문제에서 설명한 규칙에 따라 계산한 점수를 출력합니다.
10
6 7 10 12 13 14 15 20 21 22
48
모든 수를 배열로 전달받은 후 차례대로 1씩 차이나는지 검사.
arr[i-1]이 arr[i]-1과 같지 않으면, 즉 1 차이가 나지 않으면 arr[i]을 새로운 그룹의 시작 수로 보고 sum에 더함.
#include <iostream>
using namespace std;
int main(void) {
int N, sum = 0, arr[33] = { 0 };
cin >> N;
for (int i = 0; i < N; i++) cin >> arr[i];
sum += arr[0]; // 첫번째 수는 일단 합하기
for (int i = 1; i < N; i++) {
if (arr[i-1] != arr[i]-1)
sum += arr[i]; // 이웃한 수가 1차이 나지 않는 경우 합하기
}
cout << sum << "\n";
}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException
{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
String[] s = br.readLine().split(" ");
int[] arr = new int[N];
int sum = 0;
for (int i = 0; i < N; i++) arr[i] = Integer.parseInt(s[i]);
sum += arr[0]; // 첫번째 수는 일단 합하기
for (int i = 1; i < N; i++) {
if (arr[i-1] != arr[i]-1)
sum += arr[i]; // 이웃한 수가 1차이 나지 않는 경우 합하기
}
System.out.println(sum);
}
}