Algorithm/프로그래머스
-
[Java] H-indexAlgorithm/프로그래머스 2023. 4. 11. 11:38
1. 문제 📚 https://school.programmers.co.kr/learn/courses/30/lessons/42747 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2. 입출력 예 📋 3. 알고리즘 ✅ 1. 정렬해서 가장 큰 숫자 구하기 2. 인용된 논문의 개수와 인용되지 않은 논문 개수 세기 3. h번 이상 인용된 논문이 h편 이상이고 나머지 논문이 h번 이하 인용되었다면 h의 최댓값을 구하기 4. 소스코드 💻 import java.util.*; class Solution { public int solution(int[] citations) ..
-
[Java] 카펫Algorithm/프로그래머스 2023. 4. 4. 11:24
1. 문제 📚 https://school.programmers.co.kr/learn/courses/30/lessons/42842 2. 입출력 예 📋 3. 알고리즘 ✅ 노란색의 개수에 따라서 갈색의 개수가 달라지기때문에 노란색의 개수가 우선이라고 생각했다! 조건에서 가로의 개수가 더 길다고 나와있었으므로 조건절에 넣어서 노란색의 격자를 구해줬다. 1. 노란색 가로 세로 구하기 2. 갈색 가로 세로는 각각 노란색가로 + 2 노란색세로 +2 이다. 3. 갈색 가로 * 갈색 세로가 파라미터로 주어진 노란색 + 갈색 과 같은지 체크 (중요) 4. 소스코드 💻 import java.util.*; class Solution { static int width, height; public int[] solution(in..
-
[Python] 주차 요금 계산Algorithm/프로그래머스 2022. 11. 4. 15:38
1. 문제 📚 2. 입출력 예 📋 3. 알고리즘 ✅ 1. dict 형태로 차번호를 키로 두어 정리 2. 출차 시간이 없을 경우 23:59으로 넣어줘야 함 -> 각 정리 후 len()이 다르면 23:59 추가 3. 누적시간 계산 후 주차요금 계산 4. 소스코드 💻 import math # 누적 시간 계산 def cal_time(in_time, out_time): in_time = list(map(int, in_time.split(':'))) # [22, 59] out_time = list(map(int, out_time.split(':'))) # [23, 59] # 시가 더 클 경우 if out_time[0] > in_time[0]: out_time[0] -= 1 out_time[1] += 60 retur..
-
[Python] 단어 변환Algorithm/프로그래머스 2022. 10. 20. 20:13
1. 문제 📚 2. 입출력 예 📋 3. 알고리즘 ✅ 1. 한글자만 다른 단어인지 체크 2. 한번도 방문한 적 없는 단어인지 체크 -> visited에 없다면 한번도 방문한 적 없는 단어 3. 파생되어온 word에 +1 해주기 4. 소스코드 💻 from collections import deque # 한글자 체크 def is_valid(begin, target): count = len(begin) for i in range(count): if begin[i] == target[i]: count -= 1 return count == 1 def solution(begin, target, words): def bfs(word): visited = {word: 0} queue = deque([]) queue.ap..
-
[Python] 입국심사Algorithm/프로그래머스 2021. 6. 3. 02:52
1. 문제 📚 2. 입출력 예 📋 3. 알고리즘 ✅ 코테의 이진 탐색 문제는 탐색범위가 큰 상황에서 탐색을 가정하는 문제가 많다. 따라서 탐색 범위가 클 경우 이진 탐색으로 문제에 접근해보자 ! 1. 일을 하는 데 소요하는 시간 min, max 정하기 min = 1 max = 가장 오래 걸리는 심사대 * 일의 개수 2. 각 입국 심사대에서 처리 한 일들이 n의 값이 되는 지 확인해보기 각 입국 심사대에서 일한 개수 = mid // n 3. mid 값 조정하기 - mid / time 이 n의 값보다 크다면, mid를 줄인다. - mid / time 이 n의 값보다 작다면, mid를 늘린다. 마지막 mid 값이 우리가 구하는 최소 값이 된다. 4. 소스코드 💻 def solution(n, times): st..
-
[Python] 로또의 최고 순위와 최저 순위Algorithm/프로그래머스 2021. 5. 5. 23:54
1. 문제 📚 2. 입출력 예 📋 3. 알고리즘 ✅ wins_num에는 같은 숫자가 담겨있지 않으므로, 0이 모두 맞으면, 최고 순위가 된다 최저순위는 0이 모두 안맞고, win_nums과 같은 숫자의 갯수가 최저 개수가 된다. 2개가 일치하는 것부터 순위를 주고, 나머지는 6위이므로 index를 맞은 갯수로 생각하고 리스트를 만들어 준다 따라서 최고 순위 = 일치하는 번호 갯수 + 0의 갯수 최저 순위 = 일치하는 번호 갯수 4. 소스코드 💻 def solution(lottos, win_nums): answer = 0 rank = [6, 6, 5, 4, 3, 2, 1] cnt_0 = lottos.count(0) for num in win_nums: if num in lottos: answer += 1 ..
-
[Python] 폰켓몬Algorithm/프로그래머스 2021. 5. 3. 23:21
1. 문제 📚 2. 입출력 예 📋 3. 알고리즘 ✅ 가장 많은 종류의 폰켓몬을 갖고 싶어하기 때문에 박사님이 가지고 있는 폰켓몬 /2 만큼 중복제거를 해준다 4. 소스코드 💻 def solution(nums): count=len(nums)//2 poketmon = [] for i in nums: if poketmon.count(i) == 0: poketmon.append(i) return len(poketmon[:count]) 5. 다른사람의 풀이 💻 def solution(nums): return min(len(nums)/2, len(set(nums))) 앞으로는 if 절로 중복을 제거하는 방법보단 set을 이용하자! 😅
-
[Python] 2016년Algorithm/프로그래머스 2021. 5. 1. 23:33
1. 문제 📚 2. 입출력 예 📋 3. 알고리즘 ✅ 각 달의 말일을 담은 리스트를 만든다 1월 1일이 FRI이므로, FRI부터 시작하는 요일 리스트를 만든다. a-1달까지의 말일을 더한 후, b-1을 더하고 %7번째의 요일을 리턴한다. -> 1월1일이 FRI이므로 1월 1일이 0번째를 만들기 위해 각각 -1을 한다. 4. 소스코드 💻 def solution(a,b): months = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] days = ['FRI', 'SAT', 'SUN', 'MON', 'TUE', 'WED', 'THU'] return days[(sum(months[:a-1])+b-1)%7]