문제 링크: https://www.acmicpc.net/problem/2477
백준 기하 1 4단계 - 2477번 참외밭을 풀어보았다.
풀이: 빼야 할 영역을 찾기만 하면 쉽게 풀 수 있는 문제다. 빼야 할 영역은 도형을 돌다 보면 방향이 같은 곳이 한 변을 건너뛰며 생기게 되는데, 그 건너뛰게 된 곳이 바로 빼야 할 영역의 변이 된다.
C++의 경우 https://velog.io/@junttang/BOJ-2477-%EC%B0%B8%EC%99%B8%EB%B0%AD-%ED%95%B4%EA%B2%B0-%EC%A0%84%EB%9E%B5-C 를 참고했다.
C++
#include <iostream>
using namespace std;
int main()
{
pair<int,int> cor[12];
int k,a,b,ba,sa;
cin>>k;
for(int i=0;i<6;i++)
{
cin>>a>>b;
cor[i]=cor[i+6]={a,b};
}
for(int i=0;i<12;i++)
{
if(cor[i].first==cor[i-2].first&&cor[i-1].first==cor[i-3].first)
{
ba=cor[i+1].second*cor[i+2].second;
sa=cor[i-1].second*cor[i-2].second;
break;
}
}
cout<<k*(ba-sa);
}
Python
k=int(input())
total=[] # 전체 입력
x=[]
y=[]
small=[] # 빼야할 영역
for i in range(6):
dir,leng=map(int,input().split())
if dir==3 or dir==4: x.append(leng)
if dir==1 or dir==2: y.append(leng)
total.append([dir,leng])
for i in range(6):
if total[i][0]==total[(i+2)%6][0]: # 빼야할 영역을 찾는다
small.append(total[(i+1)%6][1])
print((max(x)*max(y)-small[0]*small[1])*k)
Java
'코테용 문제풀이 > 백준' 카테고리의 다른 글
터렛 풀이 (0) | 2023.01.09 |
---|---|
택시 기하학 풀이 (0) | 2023.01.09 |
직각삼각형 풀이 (0) | 2023.01.09 |
네 번째 점 풀이 (0) | 2023.01.09 |
직사각형에서 탈출 풀이 (0) | 2023.01.09 |