1. Problem
2. My Solution
def solution(participant, completion):
partDict = dict()
answer = ""
for i in participant:
partDict[i] = partDict.get(i,0) + 1
for i in completion:
partDict[i] -= 1
for i in participant:
if partDict[i] == 1:
answer = i
break
return answer
3. Others' Solutions
import collections
def solution(participant, completion):
answer = collections.Counter(participant) - collections.Counter(completion)
return list(answer.keys())[0]
// 실제 동작 원리
// Counter({'mislav': 2, 'stanko': 1, 'ana': 1}) - Counter({'stanko': 1, 'ana': 1, 'mislav': 1})
def solution(participant, completion):
answer = ''
temp = 0
dic = {}
for part in participant:
dic[hash(part)] = part
temp += int(hash(part))
for com in completion:
temp -= hash(com)
answer = dic[temp]
return answer
4. Learned
partDict['key']
를 사용하여 value 값에 접근할 때, 해당 key 가 존재하지 않을 때 에러를 발생시킴 partDict.get('key')
를 이용하여 접근한다면 key 가 존재하지 않을 때 None 객체를 반환 partDict.get('key',value)
을 이용한다면, key 가 없을 때는 value 로 초기화하여 가져옴print(collections.Counter(["mislav", "stanko", "mislav", "ana"]))
-> 출력 Counter({'mislav': 2, 'stanko': 1, 'ana': 1})
print(hash("test"))
-> 출력 -7926904895098085402
1. Problem
2. My Solution
1. 5 를 이용해서 만들 수 있는 수
5
2. 5 5 를 이용해서 만들 수 있는 수
5+5 = 10
5-5 = 0
5*5 = 25
5/5 = 1
55
3. 5 5 5 를 이용해서 만들 수 있는 수
(5+5)+5 (5+5)-5 (5+5)*5 (5+5)/5
5+(5+5) 5+(5-5) 5+(5*5) 5+(5/5)
...
...
4. 5 5 5 5 를 이용해서 만들 수 있는 수
1과 3의 조합, 2와 2의 조합
def cal(n,i,j,dp):
for a in dp[i]:
for b in dp[j]:
try:
dp[n].append(a+b)
dp[n].append(a-b)
dp[n].append(b-a)
dp[n].append(a//b)
dp[n].append(a*b)
dp[n].append(b//a)
except:
pass
def solution(N, number):
dp = [[] for i in range(9)]
dp[1].append(N) # N 1개로 만들 수 있는 수는 N
dp[2].append(N+N)
dp[2].append(N-N)
dp[2].append(N//N)
dp[2].append(N*N)
dp[2].append(int(str(N)*2))
for i in range(1,3): # number를 N 1개, 또는 2개로 만들 수 있다면 -> 1 또는 2
if number in dp[i]:
return i
for i in range(3,9):
dp[i].append(int(str(N)*i)) # N을 i개 붙인 수
for j in range(1, (i//2)+1):
cal(i,j,i-j,dp)
if number in dp[i]: # N i개로 number를 만들 수 있다면 -> i
return i
return -1 # 모든 경우를 돌려도 만들 수 없다면 -> -1
3. Learned
1. Problem
2. My Solution
def solution(d, budget):
spend = 0
department = 0
d.sort()
for i in d:
spend += i
department += 1
if spend > budget:
spend -= i
department -= 1
elif spend == budget:
break
return department
3. Others' Solution
def solution(d, budget):
d.sort()
while budget < sum(d):
d.pop()
return len(d)