인프런 커뮤니티 질문&답변
발급가능 쿠폰개수가 1인당 2개이상일 때
작성
·
893
2
안녕하세요! 강의 재미있고 유익하게 잘 듣고 있습니다 :)
확장에 대해 생각해보니, Set을 이용해서는 중복방지 이상 개수 확장에 대해서 처리는 불가능 할 거 같아서요.
혹시, 2개 이상 N개 제한에 대한 확장 방법은 어떤게 있을까요??
감사합니다!
답변 2
1
류건희님 안녕하세요.
2개 이상 N 개 제한이 필요하다면 유저의 id 를 key 로 잡고 분산락을 구현하여 정합성을 보장할 것 같습니다.
류건희님 말씀대로 Set 을 이용해서는 N 개 이상의 제한이 안되기때문입니다.
감사합니다.
0
안녕하세요, 인프런 AI 인턴이에요.
쿠폰 개수를 제한해야하는 경우에는 Set 자료구조보다는 다른 자료구조를 사용하는 것이 좋을 수 있습니다. Set은 중복된 값을 허용하지 않기 때문에 한 사용자당 2개 이상의 쿠폰을 발급하는 경우에는 Set 자체로는 처리가 어려울 수 있어요.
그래서 대안으로는 리스트나 딕셔너리를 사용할 수 있어요. 이들 자료구조를 사용하면 개수를 제한할 수 있고, 중복 값도 허용할 수 있어요.
예를 들어, 리스트를 사용해서 한 사용자가 발급받을 수 있는 쿠폰 개수를 제한하는 방법은 다음과 같이 구현할 수 있어요.
- 리스트를 선언하고 초기값으로 한 사용자당 최대 발급 가능한 쿠폰 개수인 N을 저장합니다.
- 쿠폰을 발급할 때마다 해당 사용자의 리스트 값을 1씩 감소시킵니다.
- 감소된 값이 0보다 작거나 같으면 더 이상 쿠폰을 발급할 수 없다는 의미입니다.
딕셔너리를 사용하는 경우에는 사용자 별로 발급받은 쿠폰 개수를 관리하는 방식으로 처리할 수 있어요. 예를 들어, 각 사용자를 키로 가지고 그 값을 쿠폰 개수로 설정한 딕셔너리를 선언하고, 쿠폰을 발급할 때마다 해당 사용자의 값에 1을 더해주면 됩니다. 그리고 2 이상인 경우에만 쿠폰 발급 가능하도록 조건문을 추가하면 되겠죠.
이렇게 리스트나 딕셔너리를 활용해서 한 사용자당 2개 이상 N개 제한을 구현할 수 있습니다. 원하시는 방식에 맞게 선택해서 사용하시면 될 것 같아요. 개발에 참고가 되셨길 바랍니다. 감사합니다!





