본문 바로가기

Programmers

(16)
[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] 프로그래머스 문자열 내 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 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
[LV1] 프로그래머스 나누어 떨어지는 숫자 배열 Python https://programmers.co.kr/learn/courses/30/lessons/12910?language=python3 코딩테스트 연습 - 나누어 떨어지는 숫자 배열 array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요. divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하� programmers.co.kr 이 문제는 안풀어져 있어서 업로드 하려고 풀었다. 30초짜리 문제인데, 풀고 베스트 해설을 봤더니 or을 썼더라 앞이 False ([]) 이면 [-1]을 리턴하기 위함이다. 정말 좋은 아이디어다... 대박 def solution(arr, divisor): retu..
[LV1] K번째 수 Python https://programmers.co.kr/learn/courses/30/lessons/42748 코딩테스트 연습 - K번째수 [1, 5, 2, 6, 3, 7, 4] [[2, 5, 3], [4, 4, 1], [1, 7, 3]] [5, 6, 3] programmers.co.kr 내가 제일 좋아하는 문제다. 파이썬 리스트 인덱싱 및 슬라이싱의 정수를 보여준다. 추가로 함수형 프로그래밍도~! 한 5번 정도 반복해서 풀어보길 추천한다. 참고로 맵 함수 안에 맵 함수를 넣을 때에는 (이 경우는 아님) 맨 안에 있는 맵 오브젝트를 자료형으로 변경해줘야 한다. 이는 마지막 호출 시에도 마찬가지이다. 아래 코드를 안에서부터 설명하면 커맨드의 모든 원소 x(리스트)에 대해 array에 0,1 : 슬라이싱을 적용하고,..
[LV1] 완주하지 못한 선수 python https://programmers.co.kr/learn/courses/30/lessons/42576 코딩테스트 연습 - 완주하지 못한 선수 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수�� programmers.co.kr 카운터 라이브러리를 사용해 볼 수있는 해시 문제이다. 카운터는 키 끼리 뺄 수가 있다. 따라서 참가자에는 있는데 완주자에는 없는 사람이 답이다. from collections import Counter def solution(participant, completion): return list((Counter(participant) - Co..
[LV1] 2개 뽑아서 더하기 Python https://programmers.co.kr/learn/courses/30/lessons/68644 코딩테스트 연습 - 두 개 뽑아서 더하기 programmers.co.kr 해당 문제는 조합 만드는 방법을 사용해서 해결하였다. 2중 for문으로 간단하게 해결할 수도 있지만. 조합 만드는 방법을 해당 풀이로 학습해보자. 다양하게 응용할 수 있다. def solution(number): # 결과가 중복이 가능하므로 set으로 선언한다. answer = set() # 조합을 만들 stack을 선언한다. stack = [] def check(next_idx): if len(stack) == 2: answer.add(sum(stack)) return for i in range(next_idx, len(numbe..
[LV1] 크레인 인형뽑기 Python https://programmers.co.kr/learn/courses/30/lessons/64061 코딩테스트 연습 - 크레인 인형뽑기 게임 [[0,0,0,0,0],[0,0,1,0,3],[0,2,5,0,1],[4,2,4,4,2],[3,5,1,3,1]] [1,5,3,5,1,2,1,4] 4 programmers.co.kr def solution(board, moves): # 인형을 담을 스택 stack = [] answer = 0 # 1. move 안의 좌표를 check한다. for m in moves: pick = 0 # 2. board를 위에서부터 한 "행씩" 하나씩 체크한다. for r in board: # 3. move 안의 좌표는 열을 나타낸다. 0이 아니면 인형이 있는 것이므로 선택한다. if ..