728x90
반응형
안녕하세요 늑대양입니다 :)
이번 주 화요일까지 파이썬 기반 코딩테스트를 학습합니다!! 🤓
[AI 데이터 사이언티스트 취업 완성 과정]의 42일차 일과를 정리하여 안내해드리도록 하겠습니다.
Day 42 시간표:
- 코딩테스트 실전 - 문제풀이
- 코딩테스트 실전 - 문제풀이 (실강)
- 코딩테스트 실전 - 문제풀이
코딩테스트 실전 - 문제풀이
부분수열
def solution(nums, m):
answer = 0
sumN = 0
left = 0
for right in range(len(nums)):
sumN += nums[right]
while sumN > m:
sumN -= nums[left]
left += 1
if sumN == m:
answer += 1
return answer
print(solution([1, 1, 2, 1, 3, 1, 1, 1, 1, 2], 6))
print(solution([1, 1, 1, 1, 1, 1, 3], 3))
print(solution([1, 2, 1, 2, 1, 2, 1], 3))
>4
5
6
공사비용
# 일반적인 방식
def solution(cost, m):
answer = 0
sumN = 0
left = 0
for right in range(len(cost)):
sumN += cost[right]
while sumN > m:
sumN -= cost[left]
left += 1
answer = max(answer, right-left+1)
return answer
# length 활용 방식
def solution_2(cost, m):
answer = 0
sumN = 0
left = 0
length = 0
for right in range(len(cost)):
sumN += cost[right]
length += 1
while sumN > m:
sumN -= cost[left]
left += 1
length -= 1
answer = max(answer, length)
return answer
print(solution([0, 150, 100, 0, 150, 0, 70, 140], 350))
print(solution([100, 200, 300, 400, 500, 100], 300))
print(solution_2([0, 150, 100, 0, 150, 0, 70, 140], 350))
print(solution_2([100, 200, 300, 400, 500, 100], 300))
>5
2
5
2
숫자만 추출
def solution(s):
answer = ""
for value in s:
if 48 <= ord(value) <= 57:
answer += value
return int(answer)
print(solution("gOen2Ts8eSoft"))
# ASCII 코드를 모를 경우
def solution_2(s):
answer = ""
for value in s:
if value.isdigit():
answer += value
return int(answer)
print(solution_2("gOen2Ts8eSoft"))
>28
28
키보드
import collections
from curses.ascii import isupper
def solution(s, n):
used = collections.defaultdict(int)
s = "".join(s.split())
for c in s:
if c.isupper():
used["shift"] = 1
c = c.lower()
used[c] = 1
return len(used) <= n
# def solution_2(word, n):
# myset = set(word.replace(" ", ""))
# count = len(myset)
# # print(count)
# if count <= n:
# return True
# else:
# return False
print(solution("time to time", 5))
print(solution("time to study", 7))
print(solution("Big Life is Good", 10))
print(solution("Life is Good", 7))
print(solution("Gab", 4))
# print(solution_2("Gab", 4))
>True
False
True
False
True
팰린드롬
from collections import Counter
def solution(s):
answer = 'true'
c = Counter(s)
cnt = 0
for i in c.values():
if i % 2 == 1:
cnt+=1
return cnt <= 1
print(solution('abbac'))
print(solution('abcbbbe'))
print(solution('ccccc'))
>True
False
True
문자열 압축
def solution(s):
answer = ""
cnt = 1
s = s+" "
n = len(s)
for i in range(n-1):
if s[i] == s[i + 1]:
cnt += 1
else:
answer += s[i]
if cnt > 1:
answer+= str(cnt)
cnt = 1
return answer
import collections
def solution_2(word) :
word_dic = collections.Counter(word)
word_dic
my_str = ""
for key, val in word_dic.items() :
if val > 1 :
my_str += key
my_str += str(val)
else :
my_str += key
return my_str
print(solution('KKHSSSSSSSE'))
print(solution('AAAbCCCDD'))
print(solution_2('KKHSSSSSSSE'))
print(solution_2('AAAbCCCDD'))
>K2HS7E
A3bC3D2
K2HS7E
A3bC3D2
문서 도난
def getTime(time):
H, M = time.split(":")
return int(H) * 60 + int(M)
def solution(reports, times):
answer = []
tmp = []
for report in reports:
name, time = report.split()
tmp.append([name, getTime(time)])
# tmp.sort(key = lambda x : x[1])
start, end = times.split()
start = getTime(start)
end = getTime(end)
for name, minute in tmp:
if start <= minute <= end:
answer.append(name)
# if minute > end:
# break
return sorted(answer)
print(solution(["john 15:23", "daniel 09:30", "tom 07:23", "park 09:59", "luis 08:57"], "08:33 09:45"))
print(solution(["ami 12:56", "daniel 15:00", "luis 08:57", "bill 17:35", "bob 19:59", "tom 07:23", "john 15:23", "park 09:59"], "15:01 19:59"))
>['daniel', 'luis']
['bill', 'bob', 'john']
# def solution(reports, times) :
# sus_name = [i.split()[0] for i in reports]
# sus_time = [i.split()[1] for i in reports]
# investigate = times.split()
# start = investigate[0]
# end = investigate[1]
# #print(sus_name, sus_time, start, end)
# suspect = []
# for i in range(len(sus_time)) :
# if start <= sus_time[i] <= end :
# suspect.append(i)
# def find_name(x) :
# return sus_name[x]
# result = list(map(find_name, suspect))
# return result
# HH:MM 을 변환하는 함수
# def getMinute(time):
# hour = int(time.split(":")[0])
# minute = int(time.split(":")[1])
# return hour * 60 + minute
# def getMinute(time):
# h, m = map(int, time.split(':'))
# return h * 60 + m
# def getMinute(time):
# h, m = time.split(':')
# return int(h) * 60 + int(m)
점수계산
def solution(nums):
answer = 0
score = 0
for x in nums:
if x == 1:
score += 1
answer += score
else:
score = 0
return answer
print(solution([1, 0, 1, 1, 1, 0, 0, 1, 1, 0]))
>10
같은 빈도수 만들기
from collections import Counter
def solution(s):
c1 = Counter(s)
max_val = max(c1.values())
l = []
for i in "abc":
l.append(max_val - c1[i])
return l
print(solution("aaabc"))
print(solution("bcaaa"))
print(solution("aaabb"))
>[0, 2, 2]
[0, 2, 2]
[0, 1, 3]

긴 글 읽어주셔서 감사합니다 :)
728x90
반응형
'AI > [부트캠프] 데이터 사이언티스트 과정' 카테고리의 다른 글
[Megabyte School : AI 데이터 사이언티스트 취업 완성 과정] Day 44. (2) | 2022.10.26 |
---|---|
[Megabyte School : AI 데이터 사이언티스트 취업 완성 과정] Day 43. (0) | 2022.10.25 |
[Megabyte School : AI 데이터 사이언티스트 취업 완성 과정] Day 41. (0) | 2022.10.21 |
[Megabyte School : AI 데이터 사이언티스트 취업 완성 과정] Day 40. (0) | 2022.10.20 |
[Megabyte School : AI 데이터 사이언티스트 취업 완성 과정] Day 39. (0) | 2022.10.19 |