분류 전체보기
[Programmers] 소수 찾기
[Programmers] 소수 찾기 🎈문제 https://programmers.co.kr/learn/courses/30/lessons/42839 💬설명 어려운 문제는 아니었지만 알고리즘 문제에서 자주 나오는 소수찾는 로직을 구현해볼 수 있는 문제였다. 과정: 만들 수 있는 모든 순열을 구해서 각각의 숫자가 소수인지 판별 👩💻코드 import math from itertools import permutations def is_prime(number): if number == 0 or number == 1: return False for i in range(2, int(math.sqrt(number)) + 1): if number % i == 0: return False return True def sol..
[Programmers] 모의고사
[Programmers] 모의고사 🎈문제 https://programmers.co.kr/learn/courses/30/lessons/42840 💬설명 데이터 크기도 크지 않고 학생 수도 3명으로 정해져 있었기 때문에 약간의 하드코딩을 가미해서(?) 완탐으로 풀었다. 👩💻코드 def solution(answers): answer = [] answer_n = len(answers) correct1 = 0 select1 = [1, 2, 3, 4, 5] correct2 = 0 select2 = [2, 1, 2, 3, 2, 4, 2, 5] correct3 = 0 select3 = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5] for i in range(answer_n): if select1[i % 5]..
[BaekJoon] 백준 21608번 상어 초등학교
[BaekJoon] 백준 21608번 상어 초등학교 🎈문제 https://www.acmicpc.net/problem/21608 💬설명 21년도 상반기 기출이었다. 그때 시험장에서 풀었었는데 준비가 안되어 있어서 제대로 풀지 못하고 헤맸던 것 같다. 지금 다시 풀어보니까 왜이렇게 쉬운 문제인지,,😢 시간을 재서 풀었더니 50분만에 풀었고, 한번에 솔브할 수 있었다. 문제를 보고 5가지 함수를 만들어줬다. solve(): 일종의 main 함수 like_max(arr): 비어있는 칸 중 좋아하는 학생이 인접한 칸이 가장 많은 칸들의 배열을 반환해주는 함수 empty_max(arr): 주어진 arr에서 인접한 칸 중 비어있는 칸이 가장 많은 칸(여러개일 수 있음) 배열을 반환해주는 함수 smallest_posi..
[Programmers] 가장 큰 수
[Programmers] 가장 큰 수 🎈문제 https://programmers.co.kr/learn/courses/30/lessons/42746 💬설명 감이 안와서 다른 사람 코드를 참고했는데 풀이를 봤을 때 더 어려운 문제였다. 과정 1000 이하의 숫자이기 때문에 각 자리수를 3번 곱해준다. 문자열로 각 숫자를 취급하면서 정렬한다. '333', '101010'의 경우 첫번째 수부터 비교하기 때문에 '333'이 더 크다. 정렬한 결과를 붙여서 출력한다. 포인트 3번 곱해주는 이유? '1'과 '112'가 있을 때 두번째 숫자부터 비교가 안된다. 두번 곱해주면 '11', '112112'가 되고 여기선 세번째 숫자가 비교가 안된다. 따라서 입력값의 최대값이 1000이기 때문에 3번 곱해준다. '111', ..
[Programmers] H-Index
[Programmers] H-Index 🎈문제 https://programmers.co.kr/learn/courses/30/lessons/42747 💬설명 문제가 조금 헷갈리게 적혀있어서 이해하는데 시간이 오래 걸렸다. 포인트: h번이상 인용된 논문의 개수가 h개 이상인 것 중 최대 h값 선택 예시를 보면 이해가 된다. [3, 5, 6, 1, 0]이 있을 때 내림차순으로 정렬하면 [6, 5, 3, 1, 0]이다. index도 함께 표시하면 [6, 5, 3, 1, 0] 0, 1, 2, 3, 4 인데 여기서 얘기하는 조건을 만족 시키려면 h번 이상 인용되는 논문이 h개 이상, 즉, index >= citation이다. 그러니까 index값이 결국 h번이상 인용되는 논문 개수니까 (내림차순으로 정렬했기 때문)..
[Programmers] K번째수
[Programmers] K번째수 🎈문제 https://programmers.co.kr/learn/courses/30/lessons/42748 💬설명 그냥 문제에 나온대로 풀면 되는 문제 파이썬의 sort함수를 써서 쉽게 풀었다. 👩💻코드 def solution(array, commands): answer = [] for command in commands: i, j, k = command new_arr = array[i - 1: j] new_arr.sort() answer.append(new_arr[k - 1]) return answer
[Programmers] 이중우선순위큐
[Programmers] 이중우선순위큐 🎈문제 https://programmers.co.kr/learn/courses/30/lessons/42628 💬설명 python heapq를 이용해서 풀었다. 최대힙, 최소힙 모두 써줘야 했기 때문에 두 힙의 동기화가 중요했다. 최대값 pop할 때 최소힙에서도 삭제해주고, 최소값 pop 할때 최대힙에서도 삭제해주면 된다. + 다른 사람 코드도 찾아보니 굳이 두개의 heap을 사용하지 않고 최소힙에서 heapq.nlargest(n, hq) 이렇게 해주면 큰값 순서대로 n개 뽑힌다고 한다. 그럼 heapq.nlargest(1, hq)이렇게 해주면 된다. 👩💻코드 import heapq max_hq = [] min_hq = [] def solution(operation..
[Programmers] 디스크 컨트롤러
[Programmers] 디스크 컨트롤러 🎈문제 https://programmers.co.kr/learn/courses/30/lessons/42627 💬설명 우선순위 큐로 푸는 문제 기본 아이디어를 생각해내는건 어렵지 않았지만 문제 푸는 로직을 생각해내는게 조금 까다로웠다. 기본 아이디어: 특정 시점에 소요시간이 가장 작은 작업을 골라서 수행 풀이 while 모든 작업이 완료될 때까지: 1. 현재 가능한 모든 작업 heapq에 넣기 가능한 작업의 기준: 들어온 작업들 마지막으로 체크한 시간(pre_time) < 요청 시간