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

킹코브라님의 프로필 이미지
킹코브라

작성한 질문수

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

C++알고리즘 교안

코드관련해서 질문드려요

작성

·

196

0

파이썬으로 공부하다가 강사님의 강의를 듣고 처음 c++ 를 공부하고 있는 대학원생입니다. 교안을 보다가 이해가 가지 않는 부분이 있어 질문드립니다.
 
#include<bits/stdc++.h>
using namespace std;
struct Point{
int y, x;
Point(int y, int x) : y(y), x(x){} --------- 1 y(y),x(x){} 이부분
Point(){y = -1; x = -1; } ---------- 2 왜 -1인지
bool operator < (const Point & a) const{ -------- 3 &무슨개념인지
if(x == a.x) return y < a.y; ---------- 4 x가 왜 a.x랑 같은건지
return x < a.x; --------------- 5
}
};
 
1. 교안 45페이지에 있는 구조체 관련 코드인데요. 커스텀 솔팅에 대한 부분을 써놓으신것 같은데 이해가 가질 않네요. 혹시 간단하게라도 숫자에 적힌 코드가 어떤 내용인지 말씀해주시면 정말 감사드리겠습니다.
 
2. 그리고 알고리즘 테스트를 준비하는데 있어 한번도 공부해보지않았는데요. 강사님말씀처럼 10주정도 정말 몰입한다면 승산이 있을까요?

답변 2

1

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

안녕하세요. ㅎㅎ 

1. 

int y, x;

 - 이 구조체의 변수들입니다. 

Point(int y, int x) : y(y), x(x){} 

 - y, x를 받아 생성한다라는 의미입니다. class의 constructor라는 매직메서드를 생각하면 됩니다. 이 구조체를 기반으로 객체를 생성할 때 y, x를 받아 생성한다라는 의미입니다. 

Point(){y = -1; x = -1; }

 - 만약 y, x가 정해지지 않은 경우 기본값으로 -1, -1를 집어넣는다는 의미입니다. 

 

bool operator < (const Point & a) const{

        if(x == a.x) return y < a.y; 

        return x < a.x; 

}

 - 해당 구조체를 기반으로 만들어진 객체들끼리 비교해야 하는 경우가 있습니다. 예를 들어 PointA < PointB 처럼 말이죠. 그럴 비교하는 "기준" 잡는 겁니다. 1순위는 x, 2순위는 y 기반으로 크고 작음을 판단합니다. 

 

해당 교안도 이부분은 업데이트 하겠습니다.

 * &는 교안내의 이후에 나오는 주소값부분에 설명되어있습니다. 

 

2. 네 가능합니다. 단 열심히 하셔야 해요.

 

감사합니다. 

0

킹코브라님의 프로필 이미지
킹코브라
질문자

네 답변듣고 전체적인 코드의미를 알았습니다. 감사합니다. 

킹코브라님의 프로필 이미지
킹코브라

작성한 질문수

질문하기