전체 글 473

프로그래머스 큰 수 만들기 파이썬

https://programmers.co.kr/learn/courses/30/lessons/42883 코딩테스트 연습 - 큰 수 만들기 programmers.co.kr def solution(number, k): answer = [] number = list(map(int, number)) start = 0 ans_len = len(number) - k remain = ans_len - len(answer) end = len(number) - remain + 1 while len(answer) < len(number) - k: max_val = -1 temp_s = start temp_e = end remain = ans_len - len(answer) # print((start, end)) # prin..

프로그래머스 체육복 파이썬

https://programmers.co.kr/learn/courses/30/lessons/42862 코딩테스트 연습 - 체육복 점심시간에 도둑이 들어, 일부 학생이 체육복을 도난당했습니다. 다행히 여벌 체육복이 있는 학생이 이들에게 체육복을 빌려주려 합니다. 학생들의 번호는 체격 순으로 매겨져 있어, 바로 앞번 programmers.co.kr 쉽게 풀었으나 너저분한 코드가 많다. 훨씬 많이 줄일 수 있을듯. 풀이: 1. 전체 학생수 에서 체육복을 잃어버린 학생을 뺀 값을 임시로 수업할 수 있는 학생수로 정함 2. 1부터 전체 학생 수 만큼 학생 배열 생성 3. 체육복을 잃어버림과 동시에 여분을 갖고 있는 학생은 그냥 아무일도 일어나지 않은 학생이므로 체육복을 잃어버린 학생, 여분을 갖고있는 학생에서 빼..

프로그래머스 카펫 파이썬

https://programmers.co.kr/learn/courses/30/lessons/42842 코딩테스트 연습 - 카펫 Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다. Leo는 집으로 돌아와서 아까 본 카펫의 노란색과 programmers.co.kr 쉽게 풀었지만 코드가 많이 너저분하다. 효율성은 나쁘진 않다. O(N) 1. 갈색과 노란색 카펫수가 제공됐을때 전체 카펫은 갈색+노란색 이고 조합할 수 있는 모든 가로x세로 를 구하기 위해 약수를 구한다. 2. 약수 리스트가 하나 밖에 없다면 정답은 (약수1 x 약수1) 이다. 3. 약수 리스트가 두개면 크기에 따라 (약수1 x 약수2) 또는 (약수2 x 약..

프로그래머스 소수 찾기 파이썬

https://programmers.co.kr/learn/courses/30/lessons/42839 코딩테스트 연습 - 소수 찾기 한자리 숫자가 적힌 종이 조각이 흩어져있습니다. 흩어진 종이 조각을 붙여 소수를 몇 개 만들 수 있는지 알아내려 합니다. 각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어졌을 때, 종이 programmers.co.kr 크게 어려운 문제는 아니였던듯 한데,, 내가 푼 방법이 효율적이라고는 말하지 못하겠다. 내 풀이는 아래와 같다. 1. 숫자의 길이만큼 루프를 돌린다. 2. 예를들어 1234 면 1자리로 나올수 있는 조합부터 4자리로 나올수 있는 모든 조합을 itertools 의 permutations 를 통해서 구한다. 3. 가능한 모든 조합을 순회하면서 소수여부..

프로그래머스 모의고사 파이썬

https://programmers.co.kr/learn/courses/30/lessons/42840 코딩테스트 연습 - 모의고사 수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는 programmers.co.kr 이 문제는 오랜만에 쉬운 문제였다. 무척 쉽다고 느껴서 급하게 후다닥 풀고 제출했는데 서너번 실패가 떠서 조금 당황하기도 했으나 금방 통과했다. 풀이과정: 1. 수포자1, 수포자2, 수포자3 이 찍는 패턴이 모두 다르므로 (정확히는 횟수가 다르므로) 모든 수포자의 찍는 횟수를 동일하게 맞춰주기 위해 최소 공통 배수인 40으로 맞춰주었다. 2. 답안을 순회하면서 ..

프로그래머스 H-Index 파이썬

https://programmers.co.kr/learn/courses/30/lessons/42747 코딩테스트 연습 - H-Index H-Index는 과학자의 생산성과 영향력을 나타내는 지표입니다. 어느 과학자의 H-Index를 나타내는 값인 h를 구하려고 합니다. 위키백과1에 따르면, H-Index는 다음과 같이 구합니다. 어떤 과학자가 발표 programmers.co.kr 첫번째 풀이 O(N^2) def solution(citations): answer = 0 citations.sort(reverse=True) citation_count = [0] * (citations[0] + 1) for i in citations: for j in range(0, i): citation_count[j] += 1..

프로그래머스 가장 큰 수 파이썬

https://programmers.co.kr/learn/courses/30/lessons/42746 코딩테스트 연습 - 가장 큰 수 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 programmers.co.kr 이문제는 정말이지.. ㅎㅎㅎ 그다지 어렵지 않은 인상을 주며 나를 아주 큰 곤경에 빠트린 문제다. 5시간 넘게 고민하다가 결국엔 풀어내지 못했다. 처음엔 그냥 배열 원소를 string 으로 변환한 후, string 정렬하면 끝 아니야?? 라고 생각했다. 이렇게 풀면 배열로 [3, 30, 34, 5,..

프로그래머스 이중우선순위큐

https://programmers.co.kr/learn/courses/30/lessons/42628 코딩테스트 연습 - 이중우선순위큐 programmers.co.kr 글쎄.. 이문제는 무지 쉬웠다. 뭐 고민할게 있나.. 하고 5분만에 풀고 제출하니 통과했다. 그냥 우선순위큐는 기본적으로 최소힙이니까 최소값을 꺼낼때는 heappop 으로 최대값을 꺼낼땐 pop 으로. 최종적으로 남은 값이 있으면 answer 에 맥스, 민으로 값을 넣어주면 끝이다.. 이게 왜 레벨 3이지?? import heapq from collections import deque def solution(operations): answer = [0, 0] d = deque(operations) h = [] while d: operati..

프로그래머스 디스크 컨트롤러

https://programmers.co.kr/learn/courses/30/lessons/42627 코딩테스트 연습 - 디스크 컨트롤러 하드디스크는 한 번에 하나의 작업만 수행할 수 있습니다. 디스크 컨트롤러를 구현하는 방법은 여러 가지가 있습니다. 가장 일반적인 방법은 요청이 들어온 순서대로 처리하는 것입니다. 예를 programmers.co.kr 음... 난 이런 류의 문제에 약한걸까.. 진정한 뇌정지가 와서 아예 모르겠었다.. 어떻게든 다른분의 풀이를 참고하지 않고 풀어보려고 했으나 한번 막힌 머리는 돌아갈줄을 몰랐다.. 이런 문제를 한번씩 접할때마다 좌절스럽다 그래도 어쨌든.. 풀이를 보고 어떻게 해야하는지 이해하였다. 앞으로 이런 유형의 문제를 또 만났을 때 풀어낼 수 있도록 확실히 이해하고 ..

프로그래머스 베스트앨범 파이썬

https://programmers.co.kr/learn/courses/30/lessons/42579 코딩테스트 연습 - 베스트앨범 스트리밍 사이트에서 장르 별로 가장 많이 재생된 노래를 두 개씩 모아 베스트 앨범을 출시하려 합니다. 노래는 고유 번호로 구분하며, 노래를 수록하는 기준은 다음과 같습니다. 속한 노래가 programmers.co.kr def solution(genres, plays): answer = [] dic = {} for i in range(len(genres)): genre = genres[i] if genre not in dic: dic[genre] = [plays[i], (plays[i], i)] else: dic[genre][0] += plays[i] dic[genre].ap..