import pandas as pd
from itertools import chain, combinations
def key_options(items):
return chain.from_iterable(combinations(items, r) for r in range(1, len(items)+1) )
def solution(relation):
Candidate = []
df = pd.DataFrame(data = relation)
for candidate in key_options(list(df)):
deduped = df.drop_duplicates(candidate)
if len(deduped.index) == len(df.index):
Candidate.append(set(candidate))
k = 0
while k <len(Candidate) :
for i in Candidate[k+1:] :
if Candidate[k].issubset(i) :
Candidate.remove(i)
k += 1
return len(Candidate)
def solution(record):
table = {}
room = []
answer = []
for i in record :
tmp = i.split(' ')
if len(tmp) == 3 :
action, ID, name = tmp
table[ID] = name
else :
action, ID = tmp
room.append([ID, action])
for ID, action in room :
if action == 'Change' :
continue
if action == 'Enter' :
answer.append('{}๋์ด ๋ค์ด์์ต๋๋ค.'.format(table[ID]))
else :
answer.append('{}๋์ด ๋๊ฐ์ต๋๋ค.'.format(table[ID]))
return answer
table์ key๊ฐ๋ง ๋ฐ๋ณต๋ฌธ ๋๋ฆฌ๋ฉด์ ๋ฐ๊ฟ์ฃผ๋ฉด ๋๋ค. ์ด๊ฒ๋ ๋๋ฌด ์ฌ์์ ๋ฑํ ์ค๋ช
์ ์๋ค. ๊ทธ๋๋ก ํ๋ฉด๋๋ค.
def solution(n,a,b):
return ((a-1)^(b-1)).bit_length()
์ด๋ฌธ์ 1์งฑ์ ์ฝ๋.
def solution(n, words):
for i in range(1, len(words)) :
if words[i] in words[:i] or words[i-1][-1] != words[i][0]:
q, r = divmod(i, n)
return [r+1, q+1]
return [0, 0]
๋๋ง์๊ธฐ ๊ท์น์ ์ด๊ธด ๋จ์ด์ index ๋ฅผ n์ผ๋ก ๋๋์์ ๋์ ๋ชซ, ๋๋จธ์ง๋ก ๋๊ฐ ๋ช๋ฒ์งธ์ ํ๋ ธ๋์ง๋ฅผ ์ ์ ์์ต๋๋ค.
from itertools import combinations
def prime_number(x):
answer = 0
for i in range(1,int(x**0.5)+1):
if x%i==0:
answer+=1
return 1 if answer==1 else 0
def solution(nums):
return sum(prime_number(sum(c)) for c in combinations(nums,3))
import re
def solution(files):
file_dict = {}
for file in files :
digit = re.findall('\d+', file)[0]
file_dict[file] = [file[:file.find(digit)].lower(), int(digit)]
return [x[0] for x in sorted(file_dict.items(), key = lambda x : (x[1][0], x[1][1]))]
def solution(msg):
dic = {}
answer = []
for i in range(65, 91) :
dic[chr(i)] = i-64
max_num = 26
while msg :
for i in range(1, len(msg)+1) :
if msg[:i] not in dic :
answer.append(dic[msg[:i-1]])
max_num += 1
dic[msg[:i]] = max_num
msg = msg[i-1:]
break
if msg[:i] == msg :
return answer + [dic[msg]]
๋ฌธ์ ๋๋ก ํ๋ฉด๋จ
from datetime import datetime
import re
def solution(m, musicinfos):
m = re.sub('[A-G]#', lambda x : x.group().lower()[0], m)
broad_list = [re.sub('[A-G]#', lambda x : x.group().lower()[0], info).split(',') for info in musicinfos]
songs = []
music = []
for i, info in enumerate(broad_list) :
start, end, title, melody = info
playtime = (datetime.strptime(end,'%H:%M') - datetime.strptime(start,'%H:%M')).seconds//60
q, r = divmod(playtime, len(melody))
song = melody*q + melody[:r]
if m in song :
songs.append(title)
music.append(len(song))
return songs[music.index(max(music))] if music else "(None)"
def convert(n, base):
T = "0123456789ABCDEF"
q, r = divmod(n, base)
if q == 0:
return T[r]
else:
return convert(q, base) + T[r]
def solution(n = 16, t = 16, m = 2, p = 1):
answer = ''
for i in range(t*m) :
answer += convert(i, n)
return ''.join([answer[m*x+p-1] for x in range(t)])
์ ์ฒด ๋งํด์ผํ ์ซ์์์ ์๊ธฐ์ฐจ๋ก ์ซ์๋ง ๊ณจ๋ผ๋ด๋ฉด๋จ