코테 준비 41

[SQL_SELECT]

기본형식 SELECT 컬럼 FROM 테이블 [WHERE 조건식] GROUP BY 그룹화할 컬럼 [HAVING 조건식] ORDER BY 컬럼1 [, 컬럼2, 컬럼3 ...]; 📌조건에 맞는 회원수 구하기 #내 코드 SELECT COUNT(*) FROM USER_INFO WHERE AGE BETWEEN 20 AND 29 AND JOINED LIKE '2021%'; #다른 예시 SELECT COUNT(*) AS USERS FROM USER_INFO WHERE AGE >= 20 AND AGE =2 ORDER BY USER_ID , PRODUCT_ID DESC 📌강원도에 위치한 생산공장 목록 출력하기 SELECT FACTORY_ID,FACTORY_NAME,ADDRESS FROM FOOD_FACTORY WHERE ..

[level 2] 호텔 대실

https://school.programmers.co.kr/learn/courses/30/lessons/155651 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 가장 생각든 접근법은 1) '대실 시작 시각'을 기준으로 sort()해주기 2) 들어갈 수 있는 시간이 없으면 ROOM을 하나 생성해서 만들어주기 3) 최종적으로 나오는 ROOM의 개수를 return => 그런데 실제 풀이를 보면 달랐다. 우선 sort를 하되, dict를 이용해서 max값을 구하거나 heap을 이용해서 pop,push를 반복적으로 사용해서 구하는 방법을 사용했다. 결국 누적합 ..

[level 2] 점 찍기

https://school.programmers.co.kr/learn/courses/30/lessons/140107 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 핵심포인트 ✅피타고라스의 정리를 이용해서 푸는 것(y^2=d^2-x^2의 형태라는 것을 알아야 함) ✅answer에다가 앞선 과정을 통해 구한 res를 k로 나눠야되고, 원점(0,0)을 생각해서 +1을 시켜줌 def solution(k, d): answer = 0 for x in range(0,d+1,k): res = int((d**2 - x**2)**0.5) answer += (res // k..

[level 2] 택배상자

https://school.programmers.co.kr/learn/courses/30/lessons/131704 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr assist라는 배열을 만들어 놓고나서 while문을 통해 지속적으로 append시켜준다. 이때 assist가 True이고 assist[-1] ==order[cnt]일 경우에는 cnt+=1해주고 pop()하는 과정이 필수적으로 이뤄져야한다. 이런 유형의 문제들을 많이 풀어봐야 감을 찾을 수 있을 듯 하다. def solution(order): assist=[] i=1 cnt=0 while i!=..

[level 2] k진수에서 소수 개수 구하기

https://school.programmers.co.kr/learn/courses/30/lessons/92335 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 이 문제를 풀기 위해선 우선 아래와 같이 n진수를 구하는 방법부터 알아야 한다. def solution(n, q): rev_base = '' while n > 0: n, mod = divmod(n, q) rev_base += str(mod) return rev_base[::-1] # 역순인 진수를 뒤집어 줘야 원래 변환 하고자하는 base가 출력 print(solution(45, 3)) https..

[level 2] 피로도

https://school.programmers.co.kr/learn/courses/30/lessons/87946 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 제목이 가장 눈에 확 띄었다! ㅋㅋㅋㅋ 완전 탐색 문제라고 한다. 문제설명을 보 던전을 탐험하기 위해 '최소 필요 피로도'와 '소모 피로도'가 필요하며 이를 계산하는 문제임을 알 수 있었다.예를 들어 "최소 필요 피로도"가 80, "소모 피로도"가 20인 던전을 탐험하기 위해서는 유저의 현재 남은 피로도는 80 이상 이어야 하며, 던전을 탐험한 후에는 피로도 20이 소모된다. 느낌이 combina..

[level 2] n^2 배열 자르기

https://school.programmers.co.kr/learn/courses/30/lessons/87390 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 아래와 같이 했을 경우에,, 몇몇개는 통과했었는데 나머지 테스트들에서는 '실패 (시간 초과)'가 떠버렸다.. #틀린 풀이 def solution(n, left, right): answer = [[0 for _ in range(n)] for _ in range(n) ] arr=[] for i in range(n): for j in range(n): if i==j: answer[i][j]=i+1 fo..

[level 1] 대충 만든 자판

https://school.programmers.co.kr/learn/courses/30/lessons/160586 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr #틀린 풀이 def solution(keymap, targets): answer = [] dic=dict() for i in keymap: temp=[] for j in i: dic[j]=i.find(j) #print(dic) for i in targets: result=0 for j in i: if j not in dic: result=-1 else: result+=(dic[j]+1) answ..

[level 1] 덧칠하기

https://school.programmers.co.kr/learn/courses/30/lessons/161989 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 핵심포인트 ✅deque()구조를 사용해서 popleft()함수를 이용함 ✅start+m> section[0]일 경우에 이미 칠해진것으로 생각할 수 있음 ✅이때 안쪽에 있는 while문은 최대한 start를 사용해서 제거하는 거다. 그게 안될경우에 answer+=1을 해서 다음 start가 나오게 되는 것 from collections import deque def solution(n, m , s..

[level 1] 카드 뭉치

https://school.programmers.co.kr/learn/courses/30/lessons/159994 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 내가 한 풀이는 단순히 맨 앞에 있는 원소가 해당되는지 확인하고 pop시켜서 for문을 돌린것이다. 물론 정답은 맞았지만 다른 풀이들도 한번 살펴보자! (더 직관적으로 코드 짜기) #내가 짠 코드 def solution(cards1, cards2, goal): #순서가 중요 answer = '' flag=True for i in range(len(goal)-1): #print(cards1,car..