


#include <stdio.h>
int main() {
int N1, N2, D; //N1=진우 식량, N2=선우 식량, D=두 형제의 식량의 양을 알고 싶은 날
int f = 0;
scanf_s("%d %d", &N1, &N2);
scanf_s("%d", &D);
for (int i = 1; i <= D; i++) {
if (i % 2 == 1) {
if (N1 % 2 == 1) f = (N1 / 2) + 1;
else if (N1 % 2 == 0) f = N1 / 2;
N1 -= f;
N2 += f;
}
else if (i % 2 == 0) {
if (N2 % 2 == 1) f = (N2 / 2) + 1;
else if (N2 % 2 == 0) f = N2 / 2;
N1 += f;
N2 -= f;
}
}
printf("%d %d", N1, N2);
return 0;
}
홀수 날에는 진우의 식량을 선우에게 주고 짝수 날에는 선우의 식량을 진우에게 주도록 하였다. 그리고 조건문을 써서 식량이 홀수일 때는 2로 나누고 1을 더해서 계산하였다.
배열 arr가 주어집니다. 배열 arr의 각 원소는 숫자 0부터 9까지로 이루어져 있습니다. 이때, 배열 arr에서 연속적으로 나타나는 숫자는 하나만 남기고 전부 제거하려고 합니다. 단, 제거된 후 남은 수들을 반환할 때는 배열 arr의 원소들의 순서를 유지해야 합니다. 예를 들면,
arr = [1, 1, 3, 3, 0, 1, 1] 이면 [1, 3, 0, 1] 을 return 합니다.
arr = [4, 4, 4, 3, 3] 이면 [4, 3] 을 return 합니다.
배열 arr에서 연속적으로 나타나는 숫자는 제거하고 남은 수들을 return 하는 solution 함수를 완성해 주세요.
| arr | answer |
|---|---|
| [1,1,3,3,0,1,1] | [1,3,0,1] |
| [4,4,4,3,3] | [4,3] |
#include <iostream>
#include <vector>
using namespace std;
vector<int> solution(vector<int> arr)
{
vector<int> answer;
int su = arr[0];
answer.push_back(arr[0]);
for (int i = 1; i < arr.size(); i++) {
if (su != arr[i]) {
answer.push_back(arr[i]);
su = arr[i];
}
}
}
비교할 su를 arr[0]으로 초기화하고 arr의 길이만큼 반복하며 연속되지 않는 숫자만 찾아서 answer에 넣었다.
💡 vector: STL에 있는 동적 배열 구조 클래스(자바의 ArrayList와 유사)
💡 push_back: 배열의 맨 끝에 요소 추가