본문 바로가기

프로그래머스

(31)
[LV2] 프로그래머스 문제풀이 섬 연결하기 https://programmers.co.kr/learn/courses/30/lessons/42861 코딩테스트 연습 - 섬 연결하기 4 [[0,1,1],[0,2,2],[1,2,5],[1,3,1],[2,3,8]] 4 programmers.co.kr 해당 문제는 프림 알고리즘과 크루스칼 알고리즘을 활용하여 해결할 수 있다. 먼저 프림 알고리즘을 살펴보자 # 프림 알고리즘 import heapq as hq def solution(n, costs): graph = {} # 직전 노드 - 방문 노드 체크에도 사용 pi = {} # 해당 노드에 접근하는데 필요한 비용 - 다익스트라에서는 시작점에서 해당 점으로의 거리로 변경 d = {} answer = 0 # 프림 알고리즘은 지도를 만들어준다. for f, t, ..
[LV1] 프로그래머스 [1차] 다트 게임 python https://programmers.co.kr/learn/courses/30/lessons/17682 코딩테스트 연습 - [1차] 다트 게임 programmers.co.kr 갓이유가 광고한 게임이다. 문제 해결은 다음과 같다. 1. 숫자의 경우 스택에 넣는다. 2. 그 다음 나오는 싱글 더블 트리플을 제곱한다. 3.* 스타상인 경우, 스택의 맨 위를 2배하거나, 길이가 2 이상일 경우 그 이전 점수도 2배로 한다. 4. 아차는 직전 점수만 -1배 하기 때문에 스타 후 아차는 중첩이 안된다. 5. 아차 후 스타는 중첩될 수 있는데, 그냥 우직하게 하나씩 적용하면 된다. def solution(dartResult): temp = 0 point = {"S": 1, "D": 2, "T": 3} temp = ''..
[LV1] 프로그래머스 서울에서 김서방 찾기 python https://programmers.co.kr/learn/courses/30/lessons/12919 코딩테스트 연습 - 서울에서 김서방 찾기 String형 배열 seoul의 element중 Kim의 위치 x를 찾아, 김서방은 x에 있다는 String을 반환하는 함수, solution을 완성하세요. seoul에 Kim은 오직 한 번만 나타나며 잘못된 값이 입력되는 경우는 없습니다. 제 programmers.co.kr 파이썬의 format을 써먹어 볼 수 있는 문제다. def solution(seoul:list): # print( "김서방은 {0}에 {1}있다".format(seoul.index("Kim"),0)) # 김서방은 1에 0있다 return "김서방은 {0}에 있다".format(seoul.in..
[LV1] 프로그래머스 문자열 다루기 기본 python https://programmers.co.kr/learn/courses/30/lessons/12918 코딩테스트 연습 - 문자열 다루기 기본 문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요. 예를 들어 s가 a234이면 False를 리턴하고 1234라면 True를 리턴하면 됩니다. 제한 사항 s는 길이 1 이�� programmers.co.kr 단순 반복문 구현 def solution(s:str): if s.isdigit(): if len(s) in[4,6]: return True return False 한번 더 풀면서 수정한 코드 def solution(s:str): return True if s.isdigit() and len(s) in (4,..
[LV1] 프로그래머스 문자열 내림차순으로 배치하기 python https://programmers.co.kr/learn/courses/30/lessons/12917 코딩테스트 연습 - 문자열 내림차순으로 배치하기 문자열 s에 나타나는 문자를 큰것부터 작은 순으로 정렬해 새로운 문자열을 리턴하는 함수, solution을 완성해주세요. s는 영문 대소문자로만 구성되어 있으며, 대문자는 소문자보다 작은 것으로 � programmers.co.kr 해당 문제는 연습이 제대로 안되어있으면 당황할 문제이다. 일단 문자열은 immutable인데... 재미있는게 문자열을 sort하면 배열로 바꿔 정렬해 버린다. 따라서 문자열을 다시 한번 배열로 합쳐줘야 한다. def solution(s): return "".join(sorted(s,reverse=True))
[LV1] 프로그래머스 문자열 내 p와 y의 개수 python https://programmers.co.kr/learn/courses/30/lessons/12916 코딩테스트 연습 - 문자열 내 p와 y의 개수 대문자와 소문자가 섞여있는 문자열 s가 주어집니다. s에 'p'의 개수와 'y'의 개수를 비교해 같으면 True, 다르면 False를 return 하는 solution를 완성하세요. 'p', 'y' 모두 하나도 없는 경우는 항상 True를 programmers.co.kr 단순 반복문 구현이다. 해당 문제는... 나는 이렇게 풀었다... def solution(s:str): answer = [0,0] for s in s.lower(): if s == 'p': answer[0]+=1 elif s =='y': answer[1]+=1 return True if an..
[LV1] 프로그래머스 문자열 내 마음대로 정렬하기 python 정렬 문제인데, key를 어떻게 사용하는지를 보여주는 아주 대표적인 문제이다. 이랑 비슷한 문제가 itertools의 cmp_to_key를 사용하는게 하나 더 있다. (x[n],x)로 하면 앞에 것을 먼저 적용한 뒤, 같을 경우 뒤 기준을 적용한다. 간단하게 이해하면, 퀵소트 같은 것을 하는데 비교를 대소 대신 이 함수를 쓸 수 있도록 해주는 것이다. 파이썬의 기본은 오름차순이다. 기억합시당. 뒤집으려면 reverse=True 인수를 넣어준다. def solution(strings, n): return sorted(strings, key = lambda x: (x[n],x))
[LV1] 프로그래머스 두 정수 사이의 합 python https://programmers.co.kr/learn/courses/30/lessons/12912 코딩테스트 연습 - 두 정수 사이의 합 두 정수 a, b가 주어졌을 때 a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수, solution을 완성하세요. 예를 들어 a = 3, b = 5인 경우, 3 + 4 + 5 = 12이므로 12를 리턴합니다. 제한 조건 a와 b가 같은 경우 programmers.co.kr 우리들이 좋아하는 등차수열 공식이다... (초항 + 말항 ) * 항 수 // 2 평균을 항 갯수만큼 곱해주면 해당 등차수열의 총 합이 나온다는 가우스 형님의 가르침. def solution(a, b): return (abs(a-b)+1)*(a+b)//2