programming study/Algorithm (275) 썸네일형 리스트형 [프로그래머스] 전화번호 목록 - python 풀이 본 게시물은 프로그래머스의 연습 문제 풀이입니다. 저작권은 (주) 그랩에게 있습니다 파이썬 코드 # 전화번호 목록 def solution(phone_book): answer = True # phone_book의 해시를 기록할 딕셔너리 phone_book_hash = {} # phone_book을 하나씩 접근하며 딕셔너리의 key로 기록 for numbers in phone_book: phone_book_hash[numbers] = 1 # phone_book_hash 기록 후 key 중에서 phone_book의 접두사가 되는 것이 있는 지 검사 for numbers in phone_book: # 접두사가 있는지 체크할 문자열 check = '' # 하나의 번호 문자열에서 딕셔너리에 key로 있는 지 검사 .. [프로그래머스] 단속카메라 - python 풀이 본 게시물은 프로그래머스의 연습 문제 풀이입니다. 저작권은 (주) 그랩에게 있습니다 파이썬 코드 # 단속카메라 def solution(routes): # 카메라의 갯수 answer = 0 # 차량이 나간 지점을 기준으로 정렬 routes.sort(key=lambda x: x[1]) # 카메라 위치 초기화 (가장 작은 값으로) camera = -30001 # 경로를 하나씩 탐색하기 for i in range(len(routes)): # 카메라의 위치가 진입 지점보다 작은 경우 if camera < routes[i][0]: # 카메라의 갯수 +1 answer += 1 # 카메라의 최근 위치 갱신 camera = routes[i][1] return answer Comment 그리디 알고리즘 문제. 람다식을 사.. [프로그래머스] 더 맵게 - python 풀이 본 게시물은 프로그래머스의 연습 문제 풀이입니다. 저작권은 (주) 그랩에게 있습니다 파이썬 코드 import heapq # 더 맵게 def solution(scoville, K): # 최소힙으로 변환 heapq.heapify(scoville) # 섞은 횟수 cnt = 0 # 가장 작은 스코빌 지수가 K 이상이 될 때까지 실행 while scoville[0] < K: cnt += 1 # 가장 작은 스코빌 지수의 음식 first_scovile = heapq.heappop(scoville) # 두번째로 작은 스코빌 지수의 음식 second_scovile = heapq.heappop(scoville) # 두 음식 섞기 mix_scovile = first_scovile + (second_scovile * 2) #.. [프로그래머스] 배달 - python 풀이 본 게시물은 프로그래머스의 연습 문제 풀이입니다. 저작권은 (주) 그랩에게 있습니다 파이썬 코드 # 배달 import heapq # 다익스트라 알고리즘 # 특정 노드에서 출발하여 다른 모든 노드로 가는 최단 경로 계산 def dijkstra(start, road, distance): # 시작 마을에 대한 초기화(자기 자신은 거리가 0) distance[start] = 0 # 큐에 삽입 q = [] heapq.heappush(q, (0, start)) # 큐가 비어있지 않은 경우 계속 실행 while q: # 가장 최단 거리가 짧은 마을 대한 정보 꺼내기 dist, now = heapq.heappop(q) # 이미 처리된 것이라면 무시 if distance[now] < dist: continue # 거리 .. [프로그래머스] 가장 큰 수 - python 풀이 본 게시물은 프로그래머스의 연습 문제 풀이입니다. 저작권은 (주) 그랩에게 있습니다 파이썬 코드 # 가장 큰 수 def solution(numbers): # 입력받은 숫자를 문자열화 str_numbers = list(map(str, numbers)) # 람다식을 사용하여 정렬 # 숫자가 문자열화 되어있으므로 한자리씩 해당하는 아스키 코드를 비교 # 아스키 코드가 큰 순서대로 오름차순으로 정렬 (default) # reverse=True를 넣음으로서 내림차순으로 정렬 str_numbers.sort(key=lambda x: x * 3, reverse=True) return str(''.join(str_numbers)) Comment 처음에는 입력 받은 numbers를 이용해서 순열을 만든 뒤, 만들어진 순열.. [프로그래머스] 최댓값과 최솟값 - python 풀이 본 게시물은 프로그래머스의 연습 문제 풀이입니다. 저작권은 (주) 그랩에게 있습니다 파이썬 코드 # 최댓값과 최솟값 def solution(s): # 공백을 기준으로 나누어 숫자 입력 numbers = s.split(' ') # 최솟값과 최댓값 구하기 max_num = -int(1e9) min_num = int(1e9) # 반복문으로 하나씩 탐색 for i in range(len(numbers)): num = int(numbers[i]) if num > max_num: max_num = num if num < min_num: min_num = num answer = str(min_num) + ' ' + str(max_num) return answer Comment 매우 간단한 문제. split 메소드와 .. [프로그래머스] 영어 끝말잇기 - python 풀이 본 게시물은 프로그래머스의 연습 문제 풀이입니다. 저작권은 (주) 그랩에게 있습니다 파이썬 코드 from collections import deque # 영어 끝말잇기 def solution(n, words): answer = [] # 리스트를 deque 자료형으로 변환 words_q = deque(words) # 사용된 단어를 넣을 리스트 # 가장 첫번째 단어를 넣어 초기화 used_words = [] used_words.append(words_q.popleft()) # 카운트 cnt = 1 # words_q 의 단어를 하나씩 빼기 while words_q: # 사용된 단어 word = words_q.popleft() # 해당 단어가 used_words에 없는 경우 if word not in used_.. [프로그래머스] 삼각 달팽이 - python 풀이 본 게시물은 프로그래머스의 연습 문제 풀이입니다. 저작권은 (주) 그랩에게 있습니다 파이썬 코드 # 삼각 달팽이 def solution(n): # n을 변으로 가지는 이등변직각삼각형 만들기 triangle = [[0 for i in range(0, j)] for j in range(1, n + 1)] # 숫자 채우기 # 행 x = -1 # 열 y = 0 # 넣을 수 k = 1 # 행 접근 for a in range(n): # 열 접근 for b in range(a, n): if a % 3 == 0: x += 1 elif a % 3 == 1: y += 1 elif a % 3 == 2: x -= 1 y -= 1 triangle[x][y] = k k += 1 # 1차원 리스트로 변환 answer = sum(t.. 이전 1 ··· 20 21 22 23 24 25 26 ··· 35 다음