728x90
1. 문제
https://codeup.kr/problem.php?id=2035
[출처 : 코드업(https://codeup.kr/)]
이번 문제는 의자의 길이와 앉아있는 사람의 여부를 입력받을때 앉을수 있는 경우의 수를 출력하는 문제입니다.
즉 첫버째 자리와 마지막 자리를 제외한 나머지 자리는 n-1, n, n+1 가 모두 0일 경우를 세어주면 됩니다.
여기서 자리에 사람이 있는경우는 다음자리도 앉을수 없기 때문에 바로 다다음자리로 넘어가면 더욱 빠르게 구할수 있습니다.
2. 풀이방법
STEP 1. 첫번째자리와 마지막 자리에 앉을수 있는지 체크
STEP 2. 각 자리를 확인하며 앉을수 있는지 체크
3. 해답
#include <stdio.h>
int main() {
int n, c = 0;
int arr[10000];
scanf("%d", &n);
for (int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
if (arr[0] == 0 && arr[1] == 0) c++; // 1,2번자리가 비어있으면
if (arr[n - 1] == 0 && arr[n - 2] == 0) c++; // n,n-1번째 자리가 비어있으면
for (int i = 1; i < n - 1; i++) {
if (arr[i] == 1) i++; // 자리에 있으면 다음자리도 못앉음
else if (arr[i] == 0) {
// 자리가 비어있고 양옆이 비어있으면
if (arr[i - 1] == 0 && arr[i + 1] == 0) c++;
}
}
printf("%d", c);
return 0;
}
'프로그래밍 > CodeUp' 카테고리의 다른 글
CodeUp[Q_2042] : 소화기가 필요해 (0) | 2020.03.28 |
---|---|
CodeUp[Q_2041] : 회원들의 나이 차이 (0) | 2020.03.27 |
CodeUp[Q_2034] : 인수 분해 (0) | 2020.03.25 |
CodeUp[Q_2029] : 숫자 끼워 넣기 (0) | 2020.03.24 |
CodeUp[Q_2028] : 삼각수 (0) | 2020.03.23 |