728x90
반응형
수요일[카페에서 공부해봅니다. 과연..두구두구]
1. 이것이
2. 알고리즘
3. SQL
4. 암기고래
1>
떡볶이 문제
전형적인 이진 탐색문자,(파라메트릭 서치)
최적화 문제를 결정문제로 바꾸어 해결하는 방법
절단기의 높이는 0 부터 가장 긴떡의 높이 중간 값이다.
그 후 중간값을 갖고 필요한 떡의 길이와 비교시킨다.
n, m = list(map(int, input().split(' ')))
array = list(map(int, input().split()))
start = 0
end = max(array)
result = 0
while(start <= end):
total = 0
mid = (start + end) //2
for x in array :
# 잘랐을 때의 떡의 양 계산
if x > mid :
total += m - mid
# 떡의 양이 부족한 경우 더 많이 자르기
if total < m :
end = mid - 1
else:
result = mid
start = mid + 1
print(result)
-- 다이나믹 프로그래밍
효율적인 알고리즘을 작성 (메모리공간을 조금 더 사용하면서 연산속도를 올림)
예시 )
피보나치 수열
def fibo(x):
if x == 1 or x == 2:
return 1
return fibo(x-1)+fibo(x-2)
print(fibo(3))
# 한 번 꼐산된 결과를 메모제이션하기 하기위한 리스트 초기화
d = [0] * 100
def fibo(x):
# 종료조건
if x == 1 or x == 2:
return 1
# 이미 계산한 적이 있는 문제라면 그대로 바노한
if d[x] != 0:
return d[x]
# 아직 계산하지 않는 문제라면 점화식에 따라서 피보나치 결과 반환
d[x] = fibo(x-1)+fibo(x-2)
print(fibo(99))
2>
외계행성의 나이
def solution(age):
answer = []
age = list(str(age))
for i in age:
i = int(i)
answer.append(chr(i + 97))
return "".join(answer)
다른사람이 한 풀이
def solution(age):
answer = ''
char_num = {str(i): chr(ord('a') + i) for i in range(26)}
return ''.join([char_num[x] for x in str(age)])
인덱스 바꾸기
def solution(my_string, num1, num2):
answer = ''
my_string = list(my_string)
my_string[num1], my_string[num2] = my_string[num2], my_string[num1]
return "".join(my_string)
문자열 정렬하기(2)
def solution(my_string):
answer = []
result = []
my_string = list(my_string)
for i in my_string:
result.append(ord(i.lower()))
result.sort()
for i in result:
answer.append(chr(i))
return "".join(answer)
다른사람이 한 풀이
def solution(my_string):
return ''.join(sorted(my_string.lower()))
서울에서 김서방 찾기
def solution(seoul):
answer = ''
for i,j in enumerate(seoul):
if j == "Kim":
return "김서방은 "+str(i)+"에 있다"
다른사람이 한 풀이
def findKim(seoul):
return "김서방은 {}에 있다".format(seoul.index('Kim'))
.format()과 .index를 활용
3>
상품을 구매한 회원비율 구하기
SELECT YEAR(ONL.SALES_DATE) AS YEAR,
MONTH(ONL.SALES_DATE) AS MONTH,
COUNT(DISTINCT (ONL.USER_ID)) AS PUCHASED_USERS,
ROUND((COUNT(DISTINCT (ONL.USER_ID)))
/
(SELECT COUNT(user_id) FROM USER_INFO
WHERE YEAR(JOINED) = "2021"),1) AS PUCHASED_RATIO
FROM USER_INFO INF
JOIN ONLINE_SALE ONL
ON INF.USER_ID = ONL.USER_ID
WHERE YEAR(JOINED) = "2021"
GROUP BY YEAR, MONTH
ORDER BY YEAR, MONTH
가입한 전체회원수를 구하는 법은
SELECT COUNT(USER_ID) FROM USER_INFO
WHERE YEAR(JOINED) ="2021" # 2021에 가입한 사람
이다.
문제가 대충? 아닌 대충 설명되어있다. 자신이 못하는게 아니라 문제가 이상하다 상심하지 말자

// yesterday wished to today list.
. 이것이_✔️
. 알고리즘_✔️
. SQL_✔️
. 암기고래
tomorrow wish list
. 이것이
. 알고리즘
. SQL LEFT JOIN, RIGHT JOIN GROUP BY 이론 정리하기
. 암기고래
728x90
반응형
'IT To do and To was' 카테고리의 다른 글
22년 12월 9일_프로그래머스 PCCE 모의고사 1회 수행, 점핏과 교보문고에서 개최한 조코딩의 취준생을 위한 개발 분야 총 정리 수기, 알고리즘 (0) | 2022.12.09 |
---|---|
22년 12월 8일_김장하는 날이니 지금 해놔야지.. (0) | 2022.12.08 |
22년 12월 6일_고민이다. , 부품찾기, 알고리즘 (2) | 2022.12.06 |
22년 12월 5일_기회는 나를 성장시키고 습관은 나를 만든다, 회사 코딩테스트 후기[내용 적음] (0) | 2022.12.06 |
22년 12월 4일_몸상태가..후달달, 순차탐색과, 이진탐색 (4) | 2022.12.04 |