코딩테스트 스터디

코딩테스트 스터디/프로그래머스

[LV2/DFS] 타겟 넘버

https://school.programmers.co.kr/learn/courses/30/lessons/43165 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [풀이] def solution(numbers, target): global answer answer = 0 def DFS(L, sum): global answer if L == len(numbers): if sum == target: answer += 1 else: DFS(L + 1, sum + numbers[L]) DFS(L + 1, sum - numbers[L]) DFS(0, 0) retur..

코딩테스트 스터디/백준

[실버 4/ Stack] 균형잡힌 세상

https://www.acmicpc.net/problem/4949 4949번: 균형잡힌 세상 각 문자열은 마지막 글자를 제외하고 영문 알파벳, 공백, 소괄호("( )"), 대괄호("[ ]")로 이루어져 있으며, 온점(".")으로 끝나고, 길이는 100글자보다 작거나 같다. 입력의 종료조건으로 맨 마지막에 www.acmicpc.net [풀이] import sys from collections import deque while True: data = input() cnt = 0 if data == '.': break stack = deque() for i in data: if i in ['(', '[']: stack.append(i) if i in [')', ']']: cnt += 1 if len(stack..

코딩테스트 스터디/프로그래머스

[LV2 SQL] 성분으로 구분한 아이스크림 총 주문량

https://school.programmers.co.kr/learn/courses/30/lessons/133026 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [풀이] SELECT INGREDIENT_TYPE, SUM(TOTAL_ORDER) AS TOTAL_ORDER FROM FIRST_HALF AS F INNER JOIN ICECREAM_INFO AS I ON F.FLAVOR = I.FLAVOR GROUP BY I.INGREDIENT_TYPE; ICECREAM_INFO와 INNER JOIN을 한 후, INGREDIENT_TYPE으로 GROUP BY합..

코딩테스트 스터디/프로그래머스

[LV2 그리디] 구명보트

https://school.programmers.co.kr/learn/courses/30/lessons/42885 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [풀이] from collections import deque def solution(people, limit): answer = 0 people = deque(sorted(people)) while len(people) >= 2: if people[0] + people[-1] > limit: people.pop() answer += 1 else : answer += 1 people.popleft..

코딩테스트 스터디/프로그래머스

[LV2 스택/큐] 다리를 지나는 트럭

https://school.programmers.co.kr/learn/courses/30/lessons/42583 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [풀이] # deque로 구현 # queue를 bridge_length만큼 만든 뒤 # queue의 총합이 weight보다 낮을 경우 # truck_weights를 하나씩 다리 위로 올린다(queue에 올린다) # 올라갔을 때는 항상 하나씩 작아지면서 맨 뒤에껄 0으로 업데이트해야함 # popleft를 하고, 뒤에 append로 쌓아야함 # 하지만 popleft할 때 append는 항상 0으로만 ..

코딩테스트 스터디/프로그래머스

[LV2/스택/큐] 프로세스

https://school.programmers.co.kr/learn/courses/30/lessons/42587 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [풀이] def solution(priorities, location): cnt = 0 while len(priorities) != 0: if max(priorities) > priorities[0]: priorities.append(priorities.pop(0)) location = (location - 1 + len(priorities)) % len(priorities) else : cnt ..

코딩테스트 스터디/프로그래머스

[LV2/스택/큐] 올바른 괄호

https://school.programmers.co.kr/learn/courses/30/lessons/12909 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [풀이] 처음풀이 def solution(s): while True: if '()' in s: s = s.replace('()', '') else: break if s == '': return True else : return False 시간 복잡도 생각안하고 가장 간단히 짜본 코드 효율성 문제에서 걸렸다. 일단 문자열 s에서 '()'를 찾아서 제거하는 과정을 반복하는데, 이 때 문자열을 제거하고..

코딩테스트 스터디/프로그래머스

[LV2/스택/큐] 기능개발

[풀이] 처음 풀이 def solution(progresses, speeds): answer = [] while True: cnt = 0 while True: if len(progresses) != 0: if progresses[0] >= 100: progresses.pop(0) speeds.pop(0) cnt += 1 else: if cnt > 0: answer.append(cnt) break else: answer.append(cnt) break if len(progresses) != 0: for i in range(len(progresses)): progresses[i] += speeds[i] else : break return answer 가장 먼저 progresses의 length를 판단해서 p..

코딩테스트 스터디/프로그래머스

[LV3/SQL] 헤비 유저가 소유한 장소

https://school.programmers.co.kr/learn/courses/30/lessons/77487 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [풀이] SELECT * FROM PLACES WHERE HOST_ID IN (SELECT HOST_ID FROM PLACES GROUP BY HOST_ID HAVING COUNT(*) >= 2); 서브쿼리로 간단하게 풀 수 있는 문제였습니다. HOST_ID를 GROUP BY 한 것으로 COUNT를 세고, COUNT가 2보다 큰 HOST_ID를 가져와서 HOST_ID가 해당 튜플 안에 존재하는 걸..

코딩테스트 스터디/프로그래머스

[LV 2/정렬] 가장 큰 수

https://school.programmers.co.kr/learn/courses/30/lessons/42746 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [풀이] 처음 풀이 from itertools import permutations def solution(numbers): numbers = list(map(str, numbers)) numbers = list(set(permutations(numbers, len(numbers)))) numbers = list(map(''.join, numbers)) numbers = list(map(int, n..

코딩테스트 스터디/프로그래머스

[LV2/해시] 의상

https://school.programmers.co.kr/learn/courses/30/lessons/42578 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [풀이] def solution(clothes): vd = dict() # 초기화 for clothe in clothes: vd[clothe[1]] = 0 # 딕셔너리 생성 for clothe in clothes: vd[clothe[1]] += 1 # 각 리스트별 가짓수 곱하기, 안입는 경우 추가(+ 1) first = 1 for i in vd.values(): first *= (i + 1) re..

코딩테스트 스터디/프로그래머스

[LV2/해시] 전화번호 목록

https://school.programmers.co.kr/learn/courses/30/lessons/42577 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [풀이] 처음 풀이 def solution(phone_book): phone_book.sort() for idx, word in enumerate(phone_book): for word2 in phone_book[idx + 1:]: if word == word2[: len(word)]: return False return True phone_book을 sorting 한 뒤(문자열 길이) 짧은 문자..

우상욱
'코딩테스트 스터디' 카테고리의 글 목록