Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 상가수익률계산기
- 파이썬릿코드
- 릿코드
- python Leetcode
- 파이썬 알고리즘 풀기
- leetcode 풀기
- 알고리즘풀기
- python zip_longest
- 파이썬 알고리즘
- 파이썬알고리즘
- 파이썬알고리즘풀기
- python 알고리즘
- python priority queue
- python sorted
- 릿코드 풀기
- 파이썬릿코드풀기
- 릿코드 파이썬
- 알고리즘풀이
- binary search
- leetcode풀기
- 코틀린기초
- 파이썬 릿코드
- python xor
- python 릿코드
- 파이썬 프로그래머스
- 릿코드풀기
- 릿코드풀이
- leetcode풀이
- LeetCode
- 잇츠디모
Archives
- Today
- Total
소프트웨어에 대한 모든 것
2043. Simple Bank System 본문
반응형
문제)
You have been tasked with writing a program for a popular bank that will automate all its incoming transactions (transfer, deposit, and withdraw). The bank has n accounts numbered from 1 to n. The initial balance of each account is stored in a 0-indexed integer array balance, with the (i + 1)th account having an initial balance of balance[i].
Execute all the valid transactions. A transaction is valid if:
- The given account number(s) are between 1 and n, and
- The amount of money withdrawn or transferred from is less than or equal to the balance of the account.
Implement the Bank class:
- Bank(long[] balance) Initializes the object with the 0-indexed integer array balance.
- boolean transfer(int account1, int account2, long money) Transfers money dollars from the account numbered account1 to the account numbered account2. Return true if the transaction was successful, false otherwise.
- boolean deposit(int account, long money) Deposit money dollars into the account numbered account. Return true if the transaction was successful, false otherwise.
- boolean withdraw(int account, long money) Withdraw money dollars from the account numbered account. Return true if the transaction was successful, false otherwise.
Example 1:
Input
["Bank", "withdraw", "transfer", "deposit", "transfer", "withdraw"]
[[[10, 100, 20, 50, 30]], [3, 10], [5, 1, 20], [5, 20], [3, 4, 15], [10, 50]]
Output
[null, true, true, true, false, false]
Explanation
Bank bank = new Bank([10, 100, 20, 50, 30]);
bank.withdraw(3, 10); // return true, account 3 has a balance of $20, so it is valid to withdraw $10.
// Account 3 has $20 - $10 = $10.
bank.transfer(5, 1, 20); // return true, account 5 has a balance of $30, so it is valid to transfer $20.
// Account 5 has $30 - $20 = $10, and account 1 has $10 + $20 = $30.
bank.deposit(5, 20); // return true, it is valid to deposit $20 to account 5.
// Account 5 has $10 + $20 = $30.
bank.transfer(3, 4, 15); // return false, the current balance of account 3 is $10,
// so it is invalid to transfer $15 from it.
bank.withdraw(10, 50); // return false, it is invalid because account 10 does not exist.
Constraints:
- n == balance.length
- 1 <= n, account, account1, account2 <= 105
- 0 <= balance[i], money <= 1012
- At most 104 calls will be made to each function transfer, deposit, withdraw.
문제 풀이)
- 뱅크 시스템 단순 구현 문제
솔루션1)
class Bank:
def __init__(self, balance: List[int]):
self.account_count = len(balance)
self.balance = [0] + balance
def transfer(self, account1: int, account2: int, money: int) -> bool:
if not self._check_account_validation(account1):
return False
if not self._check_account_validation(account2):
return False
if self.balance[account1] < money:
return False
self.balance[account1] -= money
self.balance[account2] += money
return True
def deposit(self, account: int, money: int) -> bool:
if not self._check_account_validation(account):
return False
self.balance[account] += money
return True
def withdraw(self, account: int, money: int) -> bool:
if not self._check_account_validation(account):
return False
if self.balance [account] >= money:
self.balance[account] -= money
return True
return False
def _check_account_validation(self, account):
if 1 <= account <= self.account_count:
return True
return False
반응형
'알고리즘 > LeetCode' 카테고리의 다른 글
173. Binary Search Tree Iterator (0) | 2022.12.23 |
---|---|
496. Next Greater Element I (0) | 2022.12.18 |
151. Reverse Words in a String (0) | 2022.12.17 |
150. Evaluate Reverse Polish Notation (0) | 2022.12.17 |
1209. Remove All Adjacent Duplicates in String II (0) | 2022.12.15 |
Comments