인스타그램 클래스


답안 제출

Points: 1
시간 제한: 2.0s
메모리 제한: 1G

문제 유형
허용된 언어
Python

사용자의 사진과 팔로우 관계를 관리하고 최신 피드를 만드는 Instagram 클래스를 작성하시오.

작성할 클래스

다음 형태의 클래스를 작성한다.

class Instagram:
    def __init__(self):
        # 코드를 작성하세요.

    def post_photo(self, user_id, photo_id):
        # 코드를 작성하세요.

    def follow(self, follower_id, followee_id):
        # 코드를 작성하세요.

    def unfollow(self, follower_id, followee_id):
        # 코드를 작성하세요.

    def get_feed(self, user_id):
        # 코드를 작성하세요.
  • post_photo(user_id, photo_id)는 사용자가 사진을 게시한 순서를 기록한다.
  • follow(follower_id, followee_id)follower_idfollowee_id를 팔로우하게 한다. 이미 팔로우 중이면 상태를 바꾸지 않는다.
  • unfollow(follower_id, followee_id)는 팔로우를 해제한다. 팔로우 중이 아니면 상태를 바꾸지 않는다.
  • get_feed(user_id)는 자신과 현재 팔로우 중인 사용자가 게시한 사진 중 가장 최근 사진부터 최대 10개의 사진 ID를 담은 list를 반환한다.
  • 팔로우하기 전에 게시된 사진도 현재 팔로우 중이라면 피드에 포함된다.
  • 팔로우를 해제한 사용자의 사진은 피드에 포함되지 않는다.

클래스를 사용하는 코드

작성한 클래스는 아래 코드와 함께 실행된다.

q = int(input())
instagram = Instagram()

for _ in range(q):
    command = input().split()

    if command[0] == "post":
        instagram.post_photo(int(command[1]), int(command[2]))
    elif command[0] == "follow":
        instagram.follow(int(command[1]), int(command[2]))
    elif command[0] == "unfollow":
        instagram.unfollow(int(command[1]), int(command[2]))
    else:
        result = instagram.get_feed(int(command[1]))
        print(*result)
        print(type(result))

위 코드가 정상적으로 동작하도록 클래스의 정의 전체를 제출한다. 입력을 받거나 객체를 생성하는 코드는 제출하지 않는다.

상태만 변경하는 메서드의 반환값은 출력하지 않는다. 값을 조회하거나 계산 결과를 반환하는 메서드는 반환값과 자료형을 출력한다.

입력

첫째 줄에 명령 수 \(Q\)가 주어진다. 다음 \(Q\)개의 줄에는 다음 명령 중 하나가 주어진다.

  • post user_id photo_id: 사진을 게시한다.
  • follow follower_id followee_id: 사용자를 팔로우한다.
  • unfollow follower_id followee_id: 팔로우를 해제한다.
  • feed user_id: 사용자의 피드를 조회한다.

  • \(1 \le Q \le 1,000\)

  • \(1 \le user_id,follower_id,followee_id \le 500\)
  • \(0 \le photo_id \le 10,000\)
  • 모든 photo_id는 서로 다르다.
  • follower_idfollowee_id는 서로 다르다.

출력

feed 명령마다 사진 ID를 최신순으로 공백을 두고 출력한 뒤 반환값의 자료형을 출력한다. 피드가 비어 있다면 사진 ID를 출력하는 줄은 빈 줄이다. 나머지 명령은 아무것도 출력하지 않는다.

예제 입력 1

8
post 1 101
feed 1
follow 1 2
post 2 201
post 1 102
feed 1
unfollow 1 2
feed 1

예제 출력 1

101
<class 'list'>
102 201 101
<class 'list'>
102 101
<class 'list'>

예제 설명 1

사용자 1이 사진 101을 게시했으므로 첫 피드는 101이다.

사용자 1이 사용자 2를 팔로우한 뒤 사용자 2가 201, 사용자 1이 102를 게시한다. 두 번째 피드에는 최신순으로 102 201 101이 나타난다.

사용자 1이 사용자 2를 언팔로우하면 사용자 2의 사진 201은 제외되므로 마지막 피드는 102 101이다. 상태 변경 명령은 출력하지 않는다.

예제 입력 2

1
feed 1

예제 출력 2

<class 'list'>

코멘트

현재 작성된 코멘트가 없습니다.