250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- 백준#BOJ#14501#퇴사#브루트포스
- 백준#boj#12755
- 백준#boj#16932#모양만들기
- 백준#BOJ#12865#평범한배낭
- 백준#BOJ#2615#오목
- 백준#BOJ#1939#중량제한
- 백준#BOJ#8012#한동이는영업사원
Archives
- Today
- Total
순간을 성실히, 화려함보단 꾸준함을
[boj : 3495]아스키 도형 본문
문제 : 그냥 문제에 나와있는 도형의 넓이를 구해라
해설 : '/' 이나 '\' 은 1/2 의 넓이를 갖는 것이 분명하고 , 문제는 '.' 일때 도형 안과 밖을 구분하여 넓이에 더해주어야 된다. 이를 필자는 처음 잘못 생각해서 상하좌우 쭉 갔을때 '/' 이나 '\' 이 존재하면 count 해서 구분해줄려고 했는데 도형안에 존재하지 않아도 상하좌우에 도형이 감쌓고 있는 경우가 있을 수가 있게 된다.
자세히 보면 처음 줄 부터 시작해서 도형이 열리면 반드시 닫혀야 된다. 이를 유심히 보면 '/' 이 존재하면 반드시 '\' 이 존재해야 하니 이를 홀짝으로 구분해주어 넓이를 계산하면 된다.
#include<bits/stdc++.h>
using namespace std;
int n, m;
string board[100];
int main()
{
int ans = 0;
cin >> n >> m;
for (int i = 0; i < n; i++) {
cin >> board[i];
int sum = 0;
for (int j = 0; j < m; j++) {
if (board[i][j] == '/' || board[i][j] == '\\')
sum++,ans+=1;
if (sum % 2 == 1 && board[i][j] == '.')
ans += 2;
}
}
cout << ans / 2;
return 0;
}
'알고리즘,SQL > 백준,BOJ' 카테고리의 다른 글
[boj : 2571] 색종이 자르기 - 3 (0) | 2020.12.14 |
---|---|
[boj : 2688] 줄어들지 않아 (0) | 2020.12.14 |
[boj : 20167]꿈틀꿈틀 호석 애벌래-기능성 (0) | 2020.12.14 |
[boj : 2666] 벽장문의 이동 (0) | 2020.12.03 |
[boj : 20292] 컨설팅 (0) | 2020.12.03 |