티스토리 뷰
int main() {
int n,m,i,j,x=0; //변수
scanf("%d",&n);
char d[2][n]; //삼각형의 상태를 저장하는 배열
for(i=0;i<2;i++) { //삼각형의 상태 입력
for(j=0;j<n;j++) {
scanf("%d",&m);
if(m) ++x;
d[i][j]=m;
}
}
//위 삼각형들 처리
x=x*3;
for(i=0;i<n;i++) {
if(d[0][i]) { //검은색 삼각형일 때
if(i>0 && d[0][i-1]) --x; //왼쪽
if(i<n-1 && d[0][i+1]) --x; //오른쪽
if(i&1); else {
if(d[1][i]) --x; //짝수번, 아래삼각형이 검은색인가?
}
}
}
//아래 삼각형들 처리
for(i=0;i<n;i++) {
if(d[1][i]) { //검은색 삼각형일 때
if(i>0 && d[1][i-1]) --x; //왼쪽
if(i<n-1 && d[1][i+1]) --x; //오른쪽
if(i&1); else {
if(d[0][i]) --x; //짝수번, 위 삼각형이 검은색인가?
}
}
} printf("%d",x); //노란색 모서리의 총합을 출력
}
풀이 : 기하학?
삼각형의 노란색 모서리의 개수 구하는 방법
0. 노란색 모서리의 총합 = 검은색 삼각형의 개수 * 3
1. 빨간색 짝수번의 삼각형은 최대 3개의 다른 삼각형과 접하고 있으며 빨간색 홀수번의 삼각형은 2개의 다른 삼각형과 접하고 있습니다.
2. 짝수번의 삼각형 아래 (파란색 0번줄 기준, 파란색 1번줄 기준은 위), 왼쪽 오른쪽에 검은색 삼각형이 있는지를 확인하고, 접하고 있는 검은 삼각형의 개수 만큼 노란색 모서리의 총합 에서 1씩 감소 시킵니다.
'c언어 > BAEKJOON' 카테고리의 다른 글
c언어 2358번 평행선 (백준) (0) | 2025.02.07 |
---|---|
c언어 31245번 모바일 광고 입찰 (백준) (0) | 2025.02.03 |
c언어 18221번 교수님 저는 취업할래요 (백준) (0) | 2025.01.26 |
c언어 32344번 유물 발굴 (백준) (0) | 2025.01.26 |
c언어 30891번 볶음밥 지키기 (백준) (0) | 2025.01.25 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- Segment Tree
- 오프라인 쿼리
- find
- DFS
- 최소 스패닝 트리
- 세그먼트 트리
- 플로이드
- 누적 합
- 기하학
- java
- C++
- 브루트포스
- XOR
- 1835
- 그리디
- 그래프
- DP
- BFS
- Lazy Propagation
- 최대공약수
- 스택
- 덱
- PASCAL
- union
- 누적합
- 백준
- 정렬
- 1835번
- C언어
- Krustal
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
글 보관함