알고리즘 17

힙 Level 2 더 맵게 - python (프로그래머스)

https://school.programmers.co.kr/learn/courses/30/lessons/42626 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 소스 코드 from heapq import heapify, heappush, heappop def solution(scoville, K): heapify(scoville) count = 0 while True: if len(scoville) = K: break low_2 = heappop(scoville) new_scoville = low_1 + (low_2 * 2) heappush(scovill..

Python/알고리즘 2023.05.08

정렬 Level 2 가장 큰 수 - python (프로그래머스)

소스 코드 def solution(numbers): numbers = list(map(str, numbers)) sort = sorted(numbers, key=lambda x :(x*4)[:4], reverse=True) result = ''.join(sort) if (int(result)) == 0: return '0' else: return str(result) 풀이 이번 문제의 핵심은 주어진 정수를 문자열로 바꾸어 정렬을 하는 것이다. 정수 형태의 비교는 값의 '크기'를 비교하지만 문자열의 비교는 사전식으로 어떤 문자열이 더 앞 순에 위치하는 지를 비교한다. 따라서 맨 처음에 리스트에 존재하는 정수를 모두 문자열로 바꾸었고 이후 sorted 함수를 사용하였다. 이때 key 값으로 lambda를 사..

Python/알고리즘 2023.05.08

해시 Level 1 완주하지 못한 선수 - python (프로그래머스)

https://school.programmers.co.kr/learn/courses/30/lessons/42576 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 소스 코드 def solution(participant, completion): participant.sort() completion.sort() for index, p in enumerate(participant): if index >= len(completion): return p if participant[index] != completion[index]: return p 풀이 맨 처음 시도..

Python/알고리즘 2023.05.01

그리디 Level 1 체육복 - python (프로그래머스)

https://school.programmers.co.kr/learn/courses/30/lessons/42862 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 소스 코드 def solution(n, lost, reserve): clothes_count = [1 for _ in range(n)] for r in reserve: clothes_count[r-1] += 1 for l in lost: clothes_count[l-1] -= 1 for index, value in enumerate(clothes_count): if value == 2: if in..

Python/알고리즘 2023.05.01

완전탐색 Level 1 모의고사 - python (프로그래머스)

https://school.programmers.co.kr/learn/courses/30/lessons/42840 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 소스코드 def solution(answers): p_1 = [1,2,3,4,5] p_2 = [2,1,2,3,2,4,2,5] p_3 = [3,3,1,1,2,2,4,4,5,5] correct_1 = 0 correct_2 = 0 correct_3 = 0 for index, value in enumerate(answers): if value == p_1[index % len(p_1)]: correct_..

Python/알고리즘 2023.05.01

정렬 Level 1 K번째수 - python (프로그래머스)

https://school.programmers.co.kr/learn/courses/30/lessons/42748 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 소스 코드 def solution(array, commands): answer = [] for command in commands: tmp = array[command[0]-1: command[1]] tmp.sort() answer.append(tmp[command[2]-1]) return answer 풀이 문제에서 나온 흐름 그대로 진행하면 간단히 풀리는 문제였다. for 문을 통해 각각의 co..

Python/알고리즘 2023.04.30

스택/큐 Level 1 같은 숫자는 싫어 - python (프로그래머스)

https://school.programmers.co.kr/learn/courses/30/lessons/12906 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 소스 코드 def solution(arr): result = [] for value in arr: if len(result) == 0: result.append(value) else: if result[len(result) - 1] != value: result.append(value) return result 풀이 문제의 핵심은 result 리스트에 두 번 연속으로 같은 값이 들어오지 않도록 하..

Python/알고리즘 2023.04.30