프로그래머스 102

[Lv.2 / 프로그래머스 / SQL] 특정 물고기를 잡은 총 수 구하기

프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr   풀이 BASS와 SNAPPER 를 잡은 총 수를 출력해야 한다. 각 물고기의 FISH_TYPE은 고정된 값이 아니므로 Join을 통해 해결해야 한다. SELECT COUNT(ID) AS FISH_COUNTFROM FISH_INFO AS FIINNER JOIN FISH_NAME_INFO AS FNION FI.FISH_TYPE = FNI.FISH_TYPEWHERE FNI.FISH_NAME = 'BASS' OR FNI.FISH_NAME = 'SNAPPER'

[Lv.3 / 프로그래머스 / 파이썬] 산 모양 타일링 (2024 KAKAO WINTER INTERNSHIP)

프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr ↓ 문제 열기더보기   풀이 제한사항 100,000 및 타일 문제이므로 DP를 활용해야 함을 쉽게 유추할 수 있다.어떤 점화식을 도입할 수 있을지 살펴보도록 하자.  tops 의 원소가 하나 추가될 때, 회색 부분은 기존(dp[n-1])의 모든 경우의 수가 고려된 부분이므로 흰 부분에 대해서 타일링을 채우는 방법을 고민해야 한다. 흰 부분은 다음과 같은 방법으로 채울 수 있다.  따라서 tops에 따라 총 3가지 경우의 수로 구분할 수 있다(현재 고려할 top 이 0이라면, 세 번째 경우는 제외하면 된다).  하..

[Lv.2 / 프로그래머스 / 파이썬] 다음 큰 숫자

프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr   풀이 숫자를 하나씩 올려갈 때, 이진수로 변환 시 1의 개수가 일치하는 것을 찾으면 된다. def solution(n): ans = n num1 = bin(n).count("1") while True: ans += 1 if num1 == bin(ans).count("1"): break return ans

[Lv.2 / 프로그래머스 / 파이썬] 이모티콘 할인행사 (2023 KAKAO BLIND RECRUITMENT)

프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr   풀이 각 이모티콘의 할인율을 적절하게 정하여 최대의 이모티콘 플러스 가입자를 유치하고, 그 때 최대의 이익을 출력해야 한다.  알고리즘이 필요하다기 보다는 단순무식한 구현 문제였다. 완전탐색으로 문제를 해결하려고 할 때, 제한 사항이 시간복잡도를 만족하는지 확인해보자.  이모티콘의 총 길이는 7이고 할인율은 10, 20, 30, 40 총 4개이다. 그리고 최대 유저는 100명이다. 이 때 생각할 수 있는 완전탐색 알고리즘은 다음과 같다. 존재할 수 있는 모든 할인율의 조합을 이모티콘의 길이만큼 구한다.할인율의..

[Lv.2 / 프로그래머스 / 파이썬] 올바른 괄호

프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr   풀이 대표적인 스택 문제이다. 알고리즘은 다음과 같다. 괄호를 순회하며 다음의 규칙을 수행한다.현재 순회하는 괄호가 ( 라면 스택에 넣는다현재 순회하는 괄호가 ) 라면 다음의 규칙을 수행한다.스택에 ( 괄호가 없다면 올바르게 짝지을 수 없으므로 False를 반환한다.스택에서 ( 괄호를 꺼내 짝지어준다(없앤다)순회가 끝났다면 다음의 규칙을 수행한다.스택에 남아있는 괄호가 없다면 모든 괄호가 올바르게 짝지어진 것이므로 True를 반환한다.스택에 괄호가 남아있다면 짝을 지어주지 못한 괄호가 있는 것이므로 False..

[Lv.2 / 프로그래머스 / 파이썬] 2 x n 타일링

프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr   풀이 2 x n 의 공간이 주어질 때 2 x 1 의 타일을 놓는 경우의 수를 구해야 하는 동적 계획법 문제이다.n이 1 증가할 때 타일을 놓는 방법은 다음과 같다. dp[n]일 때의 경우에 세로로 타일을 놓는다dp[n-1]의 경우에 가로로 2칸짜리 타일을 놓는다 따라서 점화식은 dp[n] = dp[-1] + dp[-2] 이다. def solution(n): dp = [0, 1, 2] for i in range(n - len(dp) + 1): dp.append((dp[-1] + dp[-2..

[Lv.1 / 프로그래머스 / SQL] 잡은 물고기 중 가장 큰 물고기의 길이 구하기

프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr   풀이 가장 큰 물고기의 길이를 출력하되, 소수점 두 자리까지 표시해야 하며 cm을 붙여 출력해야 한다.소수점 자리 표시는 FORMAT 함수로 가능하고, 문자열을 연결하여 출력하기 위해 CONCAT 함수를 사용한다. SELECT CONCAT(FORMAT(MAX(LENGTH), 2), 'cm') AS MAX_LENGTHFROM FISH_INFO

[Lv.1 / 프로그래머스 / 파이썬] 대충 만든 자판

프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr    풀이 알파벳마다 자판 상관 없이 가장 빨리 누를 수 있는 자판을 선택하는 것이 최선의 선택일 것이다.따라서 주어진 자판을 순회하며 알파벳마다 가장 빨리 누를 수 있는 횟수를 딕셔너리에 기록한다. 이후, targets의 문자열을 순회하며 딕셔너리를 이용해 문자열을 입력할 수 있는 가장 짧은 입력 횟수를 구한다. def solution(keymap, targets): # 알파벳별 가장 빨리 입력할 수 있는 횟수 계산 d = dict() for keys in keymap: for ke..

[Lv.3 / 프로그래머스 / SQL] 물고기 종류 별 대어 찾기

프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr    풀이 종류별로 가장 큰 물고기의 길이와 그 물고기의 ID를 출력해야 한다.  물고기의 ID를 출력해야 하는 부분 때문에 단순히 집계 함수로 문제를 해결할 수 없다.따라서 물고기의 종류별로 가장 긴 실제 레코드를 서브쿼리로 구한 뒤 메인 쿼리와 비교하여 해결해야 한다.NAME을 출력해야 하는 부분은 INNER JOIN을 통해 해결할 수 있다. SELECT ID, FISH_NAME, LENGTHFROM FISH_INFO AS FIINNER JOIN FISH_NAME_INFO AS FN..

[Lv.1 / 프로그래머스 / SQL] 특정 형질을 가지는 대장균 찾기

프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr   풀이 비트연산자를 통해 보유 형질 조건을 판별해야 한다. 비트연산을 수행할 때, 세 번째 형질을 나타내는 비트는 100인데, 이를 십진수로 표현하면 3이 아니라 4임에 유의하자. SELECT COUNT(1) AS COUNTFROM ECOLI_DATAWHERE (GENOTYPE & 1 OR GENOTYPE & 4) AND !(GENOTYPE & 2)

반응형