티스토리 뷰

 난이도는 Easy로 아래와 같다.

 

 Design a logger system that receives a stream of messages along with their timestamps. Each unique message should only be printed at most every 10 seconds (i.e. a message printed at timestamp t will prevent other identical messages from being printed until timestamp t + 10).

 All messages will come in chronological order. Several messages may arrive at the same timestamp.

 Implement the Logger class:

  • Logger() Initializes the logger object.
  • bool shouldPrintMessage(int timestamp, string message) Returns true if the message should be printed in the given timestamp, otherwise returns false.

Example 1:

Input
["Logger", "shouldPrintMessage", "shouldPrintMessage", "shouldPrintMessage", "shouldPrintMessage", "shouldPrintMessage", "shouldPrintMessage"]
[[], [1, "foo"], [2, "bar"], [3, "foo"], [8, "bar"], [10, "foo"], [11, "foo"]]
Output
[null, true, true, false, false, false, true]

Explanation
Logger logger = new Logger();
logger.shouldPrintMessage(1, "foo");  // return true, next allowed timestamp for "foo" is 1 + 10 = 11
logger.shouldPrintMessage(2, "bar");  // return true, next allowed timestamp for "bar" is 2 + 10 = 12
logger.shouldPrintMessage(3, "foo");  // 3 < 11, return false
logger.shouldPrintMessage(8, "bar");  // 8 < 12, return false
logger.shouldPrintMessage(10, "foo"); // 10 < 11, return false
logger.shouldPrintMessage(11, "foo"); // 11 >= 11, return true, next allowed timestamp for "foo" is 11 + 10 = 21

 

 timestamp와 message 쌍이 Input으로 계속 입력된다. 처음 입력되는 문자열일 경우 바로 true를 반환하고, 이전에 입력이 됐던 문자열일 경우 가장 최근에 입력됐을 때 보다 최소 10초가 경과해야 true를 반환하고, 10초 미만일 시엔 false를 반환한다. 내가 생각한 풀이는 입력된 문자열이 이전에 입력된 것인지 아닌지를 확인하고, true를 반환해야 되는 경우 Hash table을 사용해 timestamp를 업데이트한다.

 

class Logger:
    def __init__(self):
        self.msgD = {}

    def shouldPrintMessage(self, timestamp: int, message: str) -> bool:
        if message in self.msgD:
            if timestamp - self.msgD[message] >= 10:
                self.msgD[message] = timestamp
                return True
            else:
                return False
        else:
            self.msgD[message] = timestamp
            return True

 

참고

- https://leetcode.com/problems/logger-rate-limiter/

반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함
반응형