알고리즘

프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 피타고라스의 원리만 알면 풀 수 있는 문제. 근데, 피타고라스 원리 그대로 반복문을 2번 돌려서 풀면 시간초과가 뜬다. 틀린 풀이def solution(k, d): dist = (d ** 2) // (k ** 2) cnt = 0 same_cnt = 0 i = 0 while i  이렇게 풀면 시간초과가 뜨므로, 반복문을 한 번만 돌려서 풀 수 있게 풀이를 변경했다. 풀이 코드 def solution(k, d): dist = (d ** 2) // (k ** 2) ..
프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr GROUP BY, DISTINCT를 잘 활용해야 하는 문제. WITH REAL_USER_INFO AS ( SELECT COUNT(*) AS CNT FROM USER_INFO WHERE JOINED LIKE "2021%"),REAL_ONLINE_SALE AS ( SELECT YEAR(SALES_DATE) AS YEAR, MONTH(SALES_DATE) AS MONTH, COUNT(DISTINCT USER_ID) AS CNT FROM ONLINE_SALE WHERE USER_ID IN..
프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 광물을 캘 곡괭이를 선택하면서 최소 피로도인 경우를 찾아 최소 피로도를 리턴하면 되는 문제. 백트래킹을 활용해서 풀었다.풀이 코드answer = int(1e9) # 최소 피로도def backTracking(dia, iron, stone, minerals, result): global answer # print(dia, iron, stone, minerals, result) if dia == 0 and iron == 0 and stone == 0: # 더 사용할 곡괭이가 없다면 최솟값 갱신 ..
프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr  DP 테이블을 활용해서 풀 수 있는 문제. 풀이 코드def solution(k, ranges): result = [] arr = [k] # arr[i] = i번째 값 n = 0 # 작업 횟수 while k > 1: if k % 2 == 0: k //= 2 else: k = k * 3 + 1 n += 1 arr.append(k) dp = [0] * (n + 1) # dp[i] ..
프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 비트 연산을 사용해서 풀면 되는 문제그리고 Front End 스킬을 여러 개 가진 개발자가 있는 경우 동일한 ID가 여러개 출력될 수 있으므로 DISTINCT를 통해 한 ID는 한 번만 조회되도록 한다. 풀이 코드 WITH FRONTEND_SKILLCODES AS ( SELECT CODE FROM SKILLCODES WHERE CATEGORY = "Front End")SELECT DISTINCT ID, EMAIL, FIRST_NAME, LAST_NAMEFROM DEVELOPERS, FRONTEND..
프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 구현 문제. import mathdef solution(w,h): answer = 0 # 전체 사각형 개수 all_square_cnt = w * h # 먼저 w, h의 최대공약수로 w, h를 나눈다. # 나눈 값까지만 사용할 수 없는 정사각형 개수를 계산하고 그 이후는 똑같은 패턴이므로 최대공약수를 곱해주면 된다. gcd = math.gcd(w, h) w //= gcd h //= gcd # h가 더 큰 경우 h / w를 기울기, 0 ~ w까지의 값을 ..
프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 서브 쿼리와 NOT IN을 활용해서 푸는 문제.까다로웠던 점은 2022-11-01 ~ 2011-11-30까지 대여 가능한 자동차를 구분해내는 작업이었다. SELECT CAR_ID FROM SELECTED_CAR JOIN CAR_RENTAL_COMPANY_RENTAL_HISTORY USING(CAR_ID) WHERE (START_DATE = '2022-11-01') OR (START_DATE >= '2022-11-01') GROUP BY CAR_ID 이 쿼리를 통해 대여 시작 날..
프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 쉽지 않았던 문제.처음에는 이거 백트래킹으로 풀어야하나? 라는 생각이 들어서 백트래킹으로 코드를 한 번 작성해봤다. 첫 풀이 -> 백트래킹 사용 -> 오답 및 시간초과 import syssys.setrecursionlimit(10**6)maxim = 0def backTracking(n, k, enemy, answer): global maxim if n == 0: return answer if n = len(enemy): return len(enemy) if n >= ..
프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr WITH 절을 이용해 서브쿼리를 2개 만든 후 풀었다. 1. 트럭의 대여 기간 타입과 해당하는 할인율을 갖고 있는 테이블 TRUCK_DISCOUNT_PLAN2. 트럭 대여기록 ID, 트럭 대여 기간 타입, 일일 요금, 빌린 날 수를 갖고 있는 테이블 TRUCK_RENTAL_HISTORY TRUCK_RENTAL_HISTORY와 TRUCK_DISCOUNT_PLAN을 트럭 대여 기간 타입으로 LEFT OUTER JOIN한다. (트럭 대여기간 타입이 NULL인 경우에는 할인이 안 들어가게 하려고) 주의 해야 할 점은, ..
프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 야근 지수가 최소화되도록 일을 하는 방법을 구하면 된다.야근 지수를 최소화시키려면 리스트 안 원소의 제곱의 합을 최소화시키면 되는데, 그러려면 제일 큰 수부터 작게 만들어야 한다는 생각이 들었다.그래서 뭔가 최댓값을 뽑아줘야하므로 정렬 관련된 로직이 필요하다는 생각이 들었다.최댓값을 뽑아 특정 값을 해당 최댓값에서 빼주고, 다시 또 최댓값을 뽑아서 특정 값을 해당 값에서 빼주고... 이 과정을 반복해야 하는데,매번 정렬하게 된다면 시간복잡도가 증가하므로, 적절한 자료구조가 없을까 생각해보다가 문득! 머리에 우선순..
happenundo
'알고리즘' 카테고리의 글 목록