금요일[불금이네요 아름다운 하루입다]
1. 백준 中 SQL
2. programmers python 강의 수강
3. 이것이
4. https://github.com/JaeYeopHan/Interview_Question_for_Beginner + 지망회사 틀 잡기
GitHub - JaeYeopHan/Interview_Question_for_Beginner: Technical-Interview guidelines written for those who started studying progr
:boy: :girl: Technical-Interview guidelines written for those who started studying programming. I wish you all the best. :space_invader: - GitHub - JaeYeopHan/Interview_Question_for_Beginner: Techn...
github.com
1>
아? 백준엔 SQL문제가 없는 듯하다
프로그래머스 SQL를 풀었다.
보호소에서 중성화한 동물
SELECT OUTS.ANIMAL_ID, OUTS.ANIMAL_TYPE, OUTS.NAME FROM ANIMAL_INS INS
JOIN ANIMAL_OUTS OUTS
ON OUTS.ANIMAL_ID = INS.ANIMAL_ID
WHERE INS.SEX_UPON_INTAKE LIKE "%Intact%" AND(OUTS.SEX_UPON_OUTCOME LIKE "%Neutered%"OR
OUTS.SEX_UPON_OUTCOME LIKE "%Spayed%")
ORDER BY OUTS.ANIMAL_ID;
상품을 구매한 회원비율 구하기
SELECT YEAR(SALES_DATE),
MONTH(SALES_DATE),
COUNT(DISTINCT(OS.USER_ID)) AS PUCHASED_USERS,
ROUND(
(COUNT(DISTINCT(OS.USER_ID)))
/
(SELECT COUNT(USER_ID) FROM USER_INFO WHERE YEAR(JOINED)=2021), 1)
FROM ONLINE_SALE AS OS
JOIN (
SELECT USER_ID
FROM USER_INFO
WHERE YEAR(JOINED) = 2021
) AS UI
ON OS.USER_ID = UI.USER_ID
GROUP BY YEAR(SALES_DATE), MONTH(SALES_DATE);
2>
기초를 다지니까 좋다
함수의 매개변수의 return값의 인수를 맞춘 후
print 시
print("값은 {}".format(변수명))
n = 12
ownership = n in list명
print(owership) boolean 형식으로 나옴
del list명[인덱스]
list명.remove(값) # 중복된 값이라면 먼저 나온 값 하나만 지워짐
for i, name in enumerate(리스트명):
print('{}번 : {}'.format(i, name))
enumerate 는 숫자도 같이 반환해준다
--모듈
import math
math.ceil(2.5)
올림 // 3
math.floor(2.5)
내림 // 2
import random
candidates = ['가위','바위','보']
a = random.chioce(candidates) //무작위로 선택
import urllib.request
url = input()
response = urllib.request.urlopen(url)
data = response.read()
decode = data.decode('utf-8')
print(decode) // html 문서 갖고옴
다른 py문서에 함수를 import 해서 해당 문서에 import 다른 py문서명
사용 시 다른py문서명.함수명 //같은 폴더에 들어있어야 함
import datetime
now = datetime.datetime.new()
today = datetime.date.today()
print(list명.pop(인덱스값))
print(dict명.pop(키값))
dict에서 for key, value iin ages.items() : 라고 기재하면
print('{} : 키 {} : 밸류'.formate(key, value))
를 사용할 수 있다. 딕셔너리는 순서를 따르지 않아서 같은 for문이여도 값이 다를 수 있다.
list, dict 둘 다 이름.clear()를 기입할 경우 값들이 다 비워짐
dict명1.update(dict명2)
튜플의 packing, unpacking
예시 )
c = 10, 12
a,b = c
print(a) // 10
print(b) // 12가 됨
의 경우 같은 키가 존재할 경우 update의 인자값의 키에 따른 값으로 변경됨
for a in dict.items():
print('{}와 {}'.format(*a))
해도 enumerate 와 같은 결과가 나옴
for i in range(len(리스트명))
print(리스트명[i])
continue -> 반복문의 나머지 부분을 보지 않고 반복문의 처음으로 돌아간다.
3>
92p
큰 수의 법칙
주어진 수들을 M번 더하여 가장 큰 수를 만드는 법칙이다. 단, 배열의 특정한 인덱스(번호)에 해당하는 수가 연속해서 k번을 초과하여 더해질 수 없는 법칙이 특징이 있다.
주어진 배열 중 숫자를 통해 M번을 통해 가장 큰수를 만드는 것이나, 같은 수가 K번 이상 연속으로 더해지면 안된다.
K번 더한 후 두번째로 큰 수를 더한 후 다시 가장 큰 수를 더하면 된다.
하지만, 서로 다른 인덱스에 해당하는 수가 같은 경우에도 서로 다른 것으로 간주하여, 다시말해 같은 숫자라고 하더라도 다르게 취급한다.
단순한 방법
n,m,k = map(int, input().split()) # n은 배열의 개수이다.
array = list(map(int, input().split()))
array.sort() # 정렬
first = array[n-1] # 가장 큰 수 얻음
second = array[n-2] # 그 다음 큰 수
result = 0
while True:
for i in range(k): #k 만큼 돌고 while문 덕분에 m이 0이 아닌 이상 second를 거치고 다시 시작
if m == 0 :
break # m이 0이면 for문 종료
result += first
m -= 1
if m == 0 :
break # m이 0이면 while문 종료
result += second # range(k)가 끝나고 m이 0이 아닐 때 수행
m -= 1 # 더한 횟수 빼기
print(result) #최종
하지만 시간복잡도가 높아서 반복되는 수열에 대해 파악해야한다.
가장큰수가 k만큼 반복된 후 두번째 큰수가 하나 더해지는게 m/개수 만큼 반복된다.
즉, 가장큰수가 K만큼 + 두번째 큰수가 하나 = k+1 개가 m /(k+1)이 반복되는 횟수가 되고
반복되는 횟수에 k를 곱하면 총 큰수가 더해지는 횟수를 알 수 있다.
이때 나누어 떨어지지 않는 경우엔 m을 (K+1)로 나눈 나머지 만큼 가장 큰수가 추가로 더해진다.
이걸 식으로 정의하면
int(M/ (K+1)) * K + M % (K+1)
n, m, k = map(int, input().split())
data = list(map(int, input().split())
result = 0
data.sort()
first = data[n-1]
second = data[n-2]
# 가장 큰 수가 더해지는 횟수 계산
count = int(m/(k+1)) *k
count += m % (k+1)
result += (count) * first
result += (m-count) * second
print(result)
나는 한번 cycle을 돌리는 책의 내용에 힌트를 얻고
cycle을 구한 후 m의 몫만큼 횟수를 반복하고 나머지 만큼 큰 수를 더하면 된다고 연상이 되어 이렇게 코드를 짰다.
n,m,k = map(int, input().split()) # n은 배열의 개수이다.
array = list(map(int, input().split()))
array.sort() # 정렬
first = array[n-1] # 가장 큰 수 얻음
second = array[n-2] # 그 다음 큰 수
cycle = (first * k) + second # 한 사이클을 만들음
a = m//(k+1) # m에 벗어나지 않을 만큼의 더할 횟수를 구함
b = m % (k+1) # 나머지를 구함
d = b * first # 나머지의 값을 구함
result =(a*cycle) + d # 한 사이클에 따른 값 + 나머지
print(result)
더 직관적이지 않은가? 아닌가..?ㅎㅋㅋ
4>
Update README.md (#171) · JaeYeopHan/Interview_Question_for_Beginner@44e83d8
Co-authored-by: Jbee <ljyhanll@gmail.com>
github.com
이어서 보자 너무나 흥미로운 글이 나열되어있어서 좋다. 시간이 늦어서 다음에 집중하고 숙지하는게 좋을 거같다.
꼭 코딩테스트를 보는 곳, 난이도가 쉽든 어렵든 보는 곳
직원이 100명 이상이 되는 곳
본사에서 일을하는 곳
거리가 50분 이내인 곳
경력이 되는 곳
내가 즐거운 곳
// yesterday wished to today list.
. 지망하는 회사 정하기_✔️
. 병원가기_✔️
. 도서관에서 딴짓하지 않기_✔️
. 이것이보기
. SQL 백준 풀어보기_없어서 프로그래머스 품
. https://school.programmers.co.kr/learn/courses/2/lessons/179 여기부터 다시 시작_✔️
tomorrow wish list
. 병원 전화하기
. 도서관에서 딴짓하지 않기
. 프로그래머스 0lv 풀기
. opic 영상 1시간 보기
. https://school.programmers.co.kr/learn/courses/2/lessons/292 여기서 부터 다시 시작
. 이것이 진도 나가기
'IT To do and To was' 카테고리의 다른 글
22년 11월 20일_python 메소드 기본 및 상속 (0) | 2022.11.20 |
---|---|
22년 11월 19일_python3 예외처리, list slice 객체 클래스 및 기초 개념 뇌새김, 오픽 예상문제 정리 (0) | 2022.11.19 |
22년 11월 17일_알고리즘 문제 풀이 사이트 모음 및 커뮤니티 모음 + 금일 공부한 것 (0) | 2022.11.17 |
22년 11월 16일_SQL 감 찾기 및 프로그래머스 0Lv 마스터 (0) | 2022.11.16 |
22년 11월 15일_코드업 이해 안된 거 풀이 및 프로그래머스 1lv (0) | 2022.11.15 |