본문 바로가기

Python

(67)
[프로그래머스] JadenCase 문자열 만들기 - python 풀이 본 게시물은 프로그래머스의 연습 문제 풀이입니다. 저작권은 (주) 그랩에게 있습니다 파이썬 코드 # JadenCase 문자열 만들기 def solution(s): s_arr = s.split(' ') for i in range(len(s_arr)): s_arr[i] = s_arr[i].capitalize() return ' '.join(s_arr) Comment capitalize 내상 함수로 간단하게 풀 수 있었다. 가장 첫 글자의 알파벳을 대문자로 바꿔주는 함수인데, 주어진 s를 split을 사용해서 공백을 기준으로 나눈 뒤, 만들어진 문자열 리스트의 원소를 하나씩 접근하여 capitalize를 하여 첫문자만 대문자로 바꿔주도록 하였다. 그 이후에는 join으로 공백을 기준으로 문자열을 생성하도록 하..
[프로그래머스] 추석 트래픽 - python 풀이 본 게시물은 프로그래머스의 연습 문제 풀이입니다. 저작권은 (주) 그랩에게 있습니다 파이썬 코드 # 추석 트래픽 # 첫시간, 끝시간 각각으로부터 1초가 경과되었을 때 포함되는 로그 구하기 def get_cnt(time, lines_start_and_end): cnt = 0 start = time # 1초 경과 end = time + 1 # 시작시간과 끝시간이 있는 2차원 리스트 하나씩 접근 for start_and_end in lines_start_and_end: # 끝시간이 start보다 이후일 때는 포함 # 시작시간이 end보다 이전일 때도 포함 if start_and_end[1] >= start and start_and_end[0] < end: cnt += 1 return cnt def soluti..
[프로그래머스] 전화번호 목록 - 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 풀이 본 게시물은 프로그래머스의 연습 문제 풀이입니다. 저작권은 (주) 그랩에게 있습니다 파이썬 코드 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 풀이 본 게시물은 프로그래머스의 연습 문제 풀이입니다. 저작권은 (주) 그랩에게 있습니다 파이썬 코드 # 짝지어 제거하기 def solution(s): # 짝지어진 문자를 검사할 check 리스트 check = [] # s의 문자열 하나씩 접근 for x in s: # check가 비어있는 경우 문자 넣기 if not check: check.append(x) # check에 마지막으로 들어온 문자가 현재 접근한 문자와 같은경우 pop(짝이 맞는 경우) elif check[-1] == x: check.pop() # 짝이 맞지 않는경우 현재 문자를 넣기 else: check.append(x) # 모든 문자열을 검사후 check가 비어있으면 1, 비어있지 않으면 0 if not check: answer = 1 el..
[프로그래머스] 배달 - 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(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..