프로그래머스 코딩테스트 연습 Lv1 (21) 썸네일형 리스트형 Lv3 - [이중우선순위큐] [문제 설명] - I 수 -> 큐에 숫자 대입 - D 1 -> 큐에서 최댓값 삭제 - D -1 -> 큐에서 최솟값 삭제 - 위 세 명령어가 주어진 operations 배열. - 모든 연산을 처리한 후 1) 큐가 비었으면 [0,0] 2) 큐에 값이 존재 하면 [최댓값, 최솟값] 리턴 [문제 풀이] - 최소큐, 최대큐 두개 만들어서 인서트는 둘다 하고 뺄때는 각자 뺀다. - 최대큐를 위한 꼼수로 부호 반대로 해서 만듬. - 마지막에 둘의 교집합을 구하고 소트해서 출력 - 이를 위해 필요한 1) list(set(list1) & set(list2)) -->교집합 2) list(set(list1) | set(list2)) --> 합집합 3) list(set(list1) - set(list2)) --> 차집합 - .. Lv2 [더 맵게] [문제 설명] - 맵기가 들어있는 배열 Scoville - 최소 맵기 k - Scoville 의 최소값이 k 이상이도록 주어진 식에 따라 섞어라. [문제 풀이] - Heap 공부 - 최소 힙으로 정리해서 두개 빼고 계산후 다시 넣기. - 파이썬 heap 라이브러리가 있긴 한데 일단 내가 만들어 보기 [minHeap -수제작] class MinHeap(): def __init__(self): self.queue = [] def insert(self,num): self.queue.append(num) lastIndex = len(self.queue)-1 while lastIndex>=0: compareIndex = lastIndex // 2 if compareIndex >= 0 and self.queue[l.. Lv2 - 프린터 [문제 설명] - 중요도가 높은 순서대로 먼저 인식하는 프린터가 있다. 1) 대기 목록에서 가장 앞에 있는 문서를 꺼내옴. 2) 남은 대기 목록에서 꺼내온 문서보다 중요도가 높은게 하나라도 있으면 꺼내온걸 대기 가장 마지막으로 보냄. 3) 그렇지 않으면 꺼내온거 인쇄. - 중요도 배열 priorities 배열 - 내가 인쇄 요청한 문서 location 인덱스 - 위 두 가지가 주어질 때 내가 인쇄할 문서가 몇번째로 인쇄 되는지 리턴. [문제 해결] - 인덱스 저장배열 idxArr - 값 저장배열 valArr - 위 두 배열 만들어서 각각 저장 후 결과 배열인 resultArr을 만든다. 이 배열에는 중요한 순으로 소팅한 결과가 들어감. - 반복문에서 뽑은 값이 배열 내 최대 값일경우 i 를 하나 증가 시.. Lv1 - 2016 [문제설명] - 2016년 1월 1일은 금요일이다. - 2016년 a월 b일은 무슨요일인지 리턴하는 solution을 작성. - SUN,MON,TUE,WED,THU,FRI,SAT 리턴은 이거다. [내 풀이] - 1달에 30,29(윤년임),31 있으니까 이를 고려 해야함. - 그냥 노가다로 품. 다른 사람들도 대부분 비슷하고 그나마 덜 노가다 한듯. - 사전을 그냥 배열의 형태로 바꾸는게 더 좋을듯. 이게 직관적이긴 하다만 배열 자체의 인덱스로 a-1을 사용할 수 있으니까 배열이 더 나음. Lv2 - 타겟넘버 [문제설명] - n개의 음이 아닌 정수가 있음. - 이 수를 적절히 빼서 타겟 넘버를 만들려고 한다. - [1,1,1,1,1] 로 3을 만들려면 총 5가지 방법이 나옴. - 사용할 수 있는 숫자가 담긴 배열 numbers ( 2개 이상 20개 이하) (각 1이상 50 이하의 자연수) - 타겟 넘버 target ( 1이상 1000이하) [내 풀이] - 조합.. 이려나..? - 일단 해볼까..? - dfs/bfs 랍니다 ㅋㅋ; 처음보는 단어들이고 ㅠㅠ 이제 처음 해봄. dfs 로 먼저 풀어보겠습니다. - dfs가.. 말이 깊이탐색이지 재귀! 임! - 재귀로 하나씩 더하고 빼고를 만드는거임. [연장공부] - N*M 크기의 얼음 틀. - 첫 번째 줄에 어름 틀의 세로와 가로길이 N, M 이 주어진다. - 두 번.. Lv1 - 실패율 [문제 설명] - 게임 시간을 늘려 난이도를 조절 하기로 함. - 실패율(스테이지에 도달 했으나 아직 클리어하지 못한 플레이어 수 / 스테이지 도달한 플레이어 수)을 작성해라. - 전체 스테이치 개수 N (1 Lv1 - 로또의 최고 순위와 최저 순위 [문제 설명] - 1부터 45까지의 숫자 중 6개를 찍는다. - 로또는 6/5/4/3/2/그외 개를 맞추면 1/2/3/4/5/6(낙) 등이다. - 6개의 당첨 번호중 낙서 돼서 못보는 숫자를 0 으로 표기하고 당첨될 최고 순위 번호와 최저 순위 번호 찾아라. - 순서 상관 없음. - 본인이 소유한 로또 번호를 담은 배열 Lottos - 당첨 번호가 담긴 배열 win_nums - 최고순위와 최저 순위를 차례대로 리턴하는 solution을 만들어라. [내 풀이] - 우선 당첨 확정된 번호를 반복문 돌려서 찾고 (최저로 리턴) - 0개수만큼 맞았다고 가정하고 최고로 리턴 하면 될듯. - 처음에 틀렸길래 왜그런가 봤더니 단순히 맞춘최대갯수, 맞춘최소갯수를 리턴 하고 있었다. 그래서 사전형태로 이를 보완하도록 만.. Lv2 - 기능개발 [문제설명] - 먼저 배포되어야 하는 순서대로 작업의 진도가 적힌 정수 배열 progresses ( 100개 이하) - 작업의 개발 속도가 적힌 정수 배열 speeds ( 100개 이하) - 각 배포마다 몇 개의 기능이 배포되는지를 return 하는 solution 함수를 완성해라. - 작업 진도 100 미만의 자연수, 작업 속도는 100 이하의 자연수. - 배포는 하루1회 하루의 끝에. ( 진도율이 95%고 개발 속도가 4%면 배포는 2일 뒤에 이루어짐.) [내 풀이] - zip 으로 묶어서 speeds 요소에 1씩 증가시키면서 곱해가지고 (100 - progresses) 보다 커질때를 리턴하면 될거같은데. 라고 생각했지만 제한이 최대 값을 기준으로 되어 있네. 다 마무리되면 대기 했다가 7일째에 2개.. 이전 1 2 3 다음