인프런 커뮤니티 질문&답변

hkt님의 프로필 이미지
hkt

작성한 질문수

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

8-Z

8-Z 질문입니다.

작성

·

200

0

안녕하세요 큰돌님,

for(int j = x1 + 1; j <= x2; j++){
   cout << "j:" << j << " x2:" << x2  <<'\n';
   _x[j]++; 
}

 

해당 코드에서 범위가 j <= x2 마지막 꼭지점이 포함되는 이유를 모르겠습니다. 아래 조건을 준수하려면 마지막 꼭지점은 제외해야 할 것 같은 생각이 들어서요.

 단, 수평선 H는 다각형의 어떤 수평선분과도 겹처 놓여서는 안 되고, 유사하게 수직선 V는 다각형의 어떤 수직선분과도 겹쳐 놓여서는 안 된다.

감사합니다!

 

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

답변 1

0

큰돌님의 프로필 이미지
큰돌
지식공유자

안녕하세요 hkt님 ㅎㅎ

이거는 시각을 생각하시면 됩니다. 우리가 보통 시각을 기반으로 문제를 풀 때

이상 ~ 미만

또는

이값을 벗어나는 값 ~ 이하

이렇게 풀었던 거 기억나시나요? (1주차때 하는 내용입니다.)

문제에서 주어지는 구간은 그렇게 처리를 해주시면 됩니다.

이렇게 해도 맞습니다.

#include <bits/stdc++.h>
using namespace std; 
#define y1 fuck
vector<int> check_x, check_y; 
int n, x, y, x1, y1, x2, y2, _y[1000004], _x[1000004], ret; 
pair<int, int> a[100004];
int main() {
    cin >> n; 
    for(int i = 0; i < n; i++){
        cin >> x >> y;
        x += 500000;
        y += 500000;
        a[i] = {x, y};  
        check_x.push_back(x);  
        check_y.push_back(y);  
    }
    a[n] = a[0]; 
    for(int i = 0; i < n; i++){
        tie(x1, y1) = a[i];
        tie(x2, y2) = a[i + 1];  
        if(x1 != x2){
            if(x1 > x2) swap(x1, x2); 
            for(int j = x1; j < x2; j++){
                _x[j]++; 
            }
        }
        if(y1 != y2){
            if(y1 > y2) swap(y1, y2); 
            for(int j = y1; j < y2; j++){
                _y[j]++; 
            }
        }
    } 
    for(int a : check_y) ret = max(ret, _y[a]); 
    for(int a : check_x) ret = max(ret, _x[a]);   
    cout << ret << "\n";
}

 

감사합니다.

hkt님의 프로필 이미지
hkt

작성한 질문수

질문하기