인프런 커뮤니티 질문&답변
코드관련해서 질문드려요
작성
·
268
0
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
}
};
퀴즈
코딩 테스트 문제를 풀 때, 문제 유형에 따라 미리 정해진 알고리즘 분류에만 의존하는 것을 지양해야 하는 이유는 무엇일까요?
알고리즘 분류는 오래된 정보일 수 있어서
실제 문제에서는 어떤 알고리즘을 쓸지 스스로 판단해야 해서
알고리즘 분류는 코딩 테스트에 불필요해서
분류에 의존하면 더 효율적인 알고리즘을 놓칠 수 있어서
답변 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





