본문 바로가기

Algorithm

(109)
SQL 고득점 Kit 오답노트 https://school.programmers.co.kr/learn/courses/30/lessons/151136SELECT ROUND(AVG(DAILY_FEE), 0) AS AVERAGE_FEEhttps://school.programmers.co.kr/learn/courses/30/lessons/131536https://school.programmers.co.kr/learn/courses/30/lessons/59404https://school.programmers.co.kr/learn/courses/30/lessons/59405  프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr SELECT USER_..
[고득점 Kit / 탐욕법 ] 조이스틱 (feat.ord) https://school.programmers.co.kr/learn/courses/30/lessons/42860?language=python3 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 이 문제를 해결하기 위해서는 2가지를 고려해야 한다.  1. 알파벳을 맞추기 위한 조작 횟수 계산각 문자를 'A'에서 원하는 알파벳으로 바꾸는 데 필요한 최소 조작 횟수는 위쪽(▲) 혹은 아래쪽(▼)으로 이동했을 때 더 짧은 방향으로 선택각 알파벳에 대해, min(위로 이동하는 횟수, 아래로 이동하는 횟수)로 계산위로 이동하는 횟수는 해당 알파벳의 순서(예: 'B'는 1..
[고득점 Kit / 탐욕법 ] 체육복 https://school.programmers.co.kr/learn/courses/30/lessons/42862 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 이 문제는 다음의 흐름으로 풀었다.  전체 학생 수 - 체육복을 잃어버리고 빌리지 못한 학생수를 빼면 그게 답이다.먼저 lost와 reserve에 모두 포함된 학생들은 체육복을 하나 잃었지만 여벌이 있으므로 다른 학생에게 빌려줄 수 없으므로 차집합을 이용하여 계산에 의미가 없는 학생들은 전부 제외시켜준다.(우리가 구하고자 하는 것은 체육복을 잃어버렸으면서 빌리지 못한 학생수를 구하는 것이고, 애초에 ..
[고득점 Kit / 완전탐색] 모음사전 https://school.programmers.co.kr/learn/courses/30/lessons/84512 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 각 자리의 알파벳 선택에 따라 그 이후에 나올 수 있는 가능한 단어의 개수를 계산해야 한다. 단어의 길이가 최대 5자리이기 때문에 각 자리에 있는 문자가 선택된 후 그 다음 자리에서 만들 수 있는 단어들의 개수를 더하면 된다.우리는 자릿수별로 나올 수 있는 단어 개수를 미리 계산해 둔다. 예를 들면 다음과 같다.첫 번째 자리에 문자가 정해지면, 그 뒤로 0~4자리까지 단어를 만들 수 있다.예를 들어 ..
[고득점 Kit / 완전탐색] 피로도 https://school.programmers.co.kr/learn/courses/30/lessons/87946 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 이 문제를 푸는 흐름은 다음과 같다. 1. permutations(dungeons)는 던전들의 가능한 모든 순서를 생성한다. 2. 각 순서에 대해, 주어진 k 값에서 시작하여 던전마다 탐험할 수 있는지 확인하고, 탐험할 수 있다면 피로도를 차감하고 탐험한 던전 수를 증가시킨다. 3. 던전 탐험이 끝난 후 최대 탐험 던전 수를 갱신한다. 이를 코드로 옮겨보면 다음과 같다.   from itertools..
[고득점 Kit / 완전탐색] 카펫 https://school.programmers.co.kr/learn/courses/30/lessons/42842 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 이 문제는 작년쯤 풀었던 문제로 기억하는데, 이제야 해설을 하고자 한다. 이 문제는 다음과 같은 흐름으로 풀었다. 1. 전체 면적 계산(전체 타일의 개수는 brown + yellow)2. 전체 타일 개수의 약수 쌍 구하기3, 각 약수 쌍에서 테두리를 제외한 내부 영역의 면적이 노란 타일의 개수와 일치하는지 확인  def solution(brown, yellow): def divisor_pairs..
[고득점 Kit / 완전탐색] 소수찾기 https://school.programmers.co.kr/learn/courses/30/lessons/42839 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 이 문제는 다음과 같은 흐름으로 풀었다. 1. numbers로 만들어질 수 있는 모든 숫자 조합을 구한다.2. 구한 숫자 중 소수인지 아닌지 판별한다 from itertools import permutations# 소수 판별 함수def is_prime(n): if n   소수 판별은 워낙 유명한 내용이니 순열을 이용해 숫자의 조합을 구하는 부분을 자세히 보자. for length in range..
[고득점 Kit / 완전탐색] 최소직사각형 https://school.programmers.co.kr/learn/courses/30/lessons/86491 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 이 문제의 답이 나오는 과정은 간단하다. 1. 가로, 세로길이를 내림차순으로 정렬한다. (즉, 모든 명함이 가로길이 2. 각 명함의 가로길이의 최댓값, 세로길이의 최댓값을 각각 곱해준다. 이를 코드로써 구현해주면 된다. 필자는 아래와 같이 무식한 방법으로 구현했다. def solution(sizes): width = 0 height = 0 for i in range(len(sizes)..