좌표 클래스
평면 위의 좌표를 저장하고 두 가지 방법으로 이동할 수 있는 Point 클래스를 작성하시오.
작성할 클래스
다음 형태의 클래스를 작성한다.
class Point:
def __init__(self, x, y):
# 코드를 작성하세요.
def move_to(self, x, y):
# 코드를 작성하세요.
def move_by(self, dx, dy):
# 코드를 작성하세요.
def get_position(self):
# 코드를 작성하세요.
- 생성자
__init__(x, y)는 정수x,y를 받아 현재 좌표로 저장한다. move_to(x, y)는 현재 위치와 관계없이 좌표를(x, y)로 변경하고 값을 반환하지 않는다.move_by(dx, dy)는 현재 위치에서 \(x\)축 방향으로dx, \(y\)축 방향으로dy만큼 이동하고 값을 반환하지 않는다.get_position()은 현재 좌표를(x, y)형태의tuple로 반환한다.
클래스를 사용하는 코드
작성한 클래스는 아래 코드와 함께 실행된다.
x, y = map(int, input().split())
to_x, to_y = map(int, input().split())
dx, dy = map(int, input().split())
point = Point(x, y)
result = point.get_position()
print(*result)
print(type(result))
result = point.move_to(to_x, to_y)
print(type(result))
result = point.get_position()
print(*result)
print(type(result))
result = point.move_by(dx, dy)
print(type(result))
result = point.get_position()
print(*result)
print(type(result))
위 코드가 정상적으로 동작하도록 클래스를 작성한다. 제출할 때는 작성한 클래스의 정의 전체만 제출한다. 입력을 받거나 객체를 생성하는 코드는 제출하지 않는다.
입력
첫째 줄에 처음 위치 x, y가 주어진다.
둘째 줄에 move_to()에 전달할 to_x, to_y가 주어진다.
셋째 줄에 move_by()에 전달할 dx, dy가 주어진다.
- 입력되는 모든 정수는 \(-1,000,000,000\) 이상 \(1,000,000,000\) 이하이다.
출력
처음 위치, move_to()를 호출한 뒤의 위치, move_by()를 호출한 뒤의 위치를 차례대로 출력한다.
move_to()와 move_by()는 값을 반환하지 않아야 하며, get_position()은 tuple을 반환해야 한다.
각 메서드를 호출한 뒤에는 반환값의 자료형도 출력한다.
예제 입력 1
3 5
10 -2
-2 4
예제 출력 1
3 5
<class 'tuple'>
<class 'NoneType'>
10 -2
<class 'tuple'>
<class 'NoneType'>
8 2
<class 'tuple'>
예제 설명 1
Point(3, 5)로 객체를 만들면 처음 위치는 (3, 5)이다. get_position()은 이 좌표를 tuple로 반환한다.
move_to(10, -2)를 호출하면 현재 위치와 관계없이 좌표가(10, -2)로 변경된다. 이 메서드는 값을 반환하지 않는다.get_position()을 다시 호출하면(10, -2)를 반환한다.move_by(-2, 4)를 호출하면 현재 위치에서 \(x\)축으로-2, \(y\)축으로4만큼 이동하므로 좌표는(8, 2)가 된다. 이 메서드도 값을 반환하지 않는다.- 마지막
get_position()은(8, 2)를tuple로 반환한다.
예제 입력 2
0 0
-3 7
5 -1
예제 출력 2
0 0
<class 'tuple'>
<class 'NoneType'>
-3 7
<class 'tuple'>
<class 'NoneType'>
2 6
<class 'tuple'>
코멘트