알고리즘

알고리즘/Python

[python] 프로그래머스 - 주차 요금 계산

출처 : 프로그래머스 코딩테스트 연습, https://programmers.co.kr/learn/courses/30/lessons/92341 코딩테스트 연습 - 주차 요금 계산 [180, 5000, 10, 600] ["05:34 5961 IN", "06:00 0000 IN", "06:34 0000 OUT", "07:59 5961 OUT", "07:59 0148 IN", "18:59 0000 IN", "19:09 0148 OUT", "22:59 5961 IN", "23:00 5961 OUT"] [14600, 34400, 5000] programmers.co.kr 더보기 풀이 import math def time_calculate(time_in, time_out): if time_out[1] < time_i..

알고리즘/Python

[python] 프로그래머스 - 괄호 회전하기

출처 : 프로그래머스 코딩테스트 연습, https://programmers.co.kr/learn/courses/30/lessons/76502 코딩테스트 연습 - 괄호 회전하기 programmers.co.kr 더보기 풀이 from collections import deque def solution(s): s = deque(list(s)) count = 0 for i in range(len(s)): s.rotate() stack = [] for par in s: if par == '(' or par == '{' or par == '[': stack.append(par) else: if len(stack)

알고리즘/Python

[python] 프로그래머스 - N개의 최소공배수

출처 : 프로그래머스 코딩테스트 연습, https://programmers.co.kr/learn/courses/30/lessons/12953 코딩테스트 연습 - N개의 최소공배수 두 수의 최소공배수(Least Common Multiple)란 입력된 두 수의 배수 중 공통이 되는 가장 작은 숫자를 의미합니다. 예를 들어 2와 7의 최소공배수는 14가 됩니다. 정의를 확장해서, n개의 수의 최소공배 programmers.co.kr 더보기 풀이 def solution(arr): #100 이하의 모든 소수 구하기 prime = set(range(2, 100)) for i in range(2, int(100**0.5) + 1): prime -= set(range(i*2, 100, i)) prime = list(p..

알고리즘/Python

[python] 프로그래머스 - 거리두기 확인하기

출처 : 프로그래머스 코딩테스트 연습, https://programmers.co.kr/learn/courses/30/lessons/81302 코딩테스트 연습 - 거리두기 확인하기 [["POOOP", "OXXOX", "OPXPX", "OOXOX", "POXXP"], ["POOPX", "OXPXP", "PXXXO", "OXXXO", "OOOPP"], ["PXOPX", "OXOXP", "OXPOX", "OXXOP", "PXPOX"], ["OOOXX", "XOOOX", "OOOXX", "OXOOX", "OOOOO"], ["PXPXP", "XPXPX", "PXPXP", "XPXPX", "PXPXP"]] [1, 0, 1, 1, 1] programmers.co.kr 더보기 풀이 def solution(places):..

알고리즘/Python

[python] 프로그래머스 - 게임 맵 최단 거리

출처 : 프로그래머스 코딩테스트 연습, https://programmers.co.kr/learn/courses/30/lessons/1844 코딩테스트 연습 - 게임 맵 최단거리 [[1,0,1,1,1],[1,0,1,0,1],[1,0,1,1,1],[1,1,1,0,1],[0,0,0,0,1]] 11 [[1,0,1,1,1],[1,0,1,0,1],[1,0,1,1,1],[1,1,1,0,0],[0,0,0,0,1]] -1 programmers.co.kr 더보기 첫 번째 풀이 : 실패 from collections import deque def solution(maps): n = len(maps) m = len(maps[0]) queue = deque() queue.append((0, 0, 0)) while queue: ..

알고리즘/알고리즘

Recursion(재귀)

본 글은 인프런의 영리한 프로그래밍을 위한 알고리즘 강좌를 듣고 정리하는 글입니다. 순환(재귀) 함수란? 함수가 자기자신을 호출하는 함수의 형태 def function(...){ ... function(...); ... } 순환 함수는 무한루프에 빠지는가? 재귀함수는 자기 자신을 호출하기 때문에 무한 루프에 빠지기 쉬운 구조를 가진다. 때문에 무한루프를 피하기 위해서는 아래와 같은 두 가지 조건을 만족해야한다. 1. Base case(종료 조건) : 적어도 하나는 recursion에 빠지지 않는 경우가 존재해야한다. 2. Recursive case : 모든 Case는 Recursion을 반복하다 Base Case로 수렴해야한다. 순환 함수와 수학적 귀납법 func(int n)은 음이 아닌 정수 n에서 0..

알고리즘/Python

[python] 프로그래머스 - 124 나라의 숫자

출처 : 프로그래머스 코딩테스트 연습, https://programmers.co.kr/learn/courses/30/lessons/12899 코딩테스트 연습 - 124 나라의 숫자 programmers.co.kr 더보기 첫 번째 풀이 : 효율성 테스트3 실패 def solution(n): answer = [] n = int(n) while n >= 3: rest = n % 3 if rest != 0: answer.append(str(rest)) n //= 3 else: answer.append('4') n = n // 3 - 1 answer.append(str(n)) return str(int(''.join(reversed(answer)))) 처음보자마자 한 생각은 n진법과 비슷한 규칙성이 있지 않을까?..

알고리즘/Python

[python] 프로그래머스 - 타겟 넘버

출처 : 프로그래머스 코딩테스트 연습, https://programmers.co.kr/learn/courses/30/lessons/43165 코딩테스트 연습 - 타겟 넘버 n개의 음이 아닌 정수들이 있습니다. 이 정수들을 순서를 바꾸지 않고 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 programmers.co.kr 더보기 풀이 def plus_minus(current, array, index, target, count): plus_node = current + array[index] minus_node = current - array[index] if index == len(array) - 1: if plus_..

알고리즘/Python

[python] 프로그래머스 - 가장 큰 수

출처 : 프로그래머스 코딩테스트 연습, https://programmers.co.kr/learn/courses/30/lessons/42883 코딩테스트 연습 - 큰 수 만들기 programmers.co.kr 더보기 첫 번째 풀이 : 테스트 케이스 10에서 시간 초과 def solution(number, k): answer = '' start = 0 for i in range(k+1, len(number)+1): max_val = max(number[start:i]) answer += max_val start += number[start:i].index(max_val) + 1 return answer 난 당연히 맞을거라고 생각하고 있었는데 시간초과가 나오길래 너무 당황스러웠다. 사고방식은 다음과 같다. n..

알고리즘/Python

[python] 프로그래머스 - 소수 찾기

출처 : 프로그래머스 코딩테스트 연습, https://programmers.co.kr/learn/courses/30/lessons/42839 코딩테스트 연습 - 소수 찾기 한자리 숫자가 적힌 종이 조각이 흩어져있습니다. 흩어진 종이 조각을 붙여 소수를 몇 개 만들 수 있는지 알아내려 합니다. 각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어졌을 때, 종이 programmers.co.kr 소수 찾는 문제는 굉장히 전통적인 문제라서 효율적으로 찾는 방법을 알아두면 편하다. (아마 LV1에 소수 찾는 문제 중 효율정 테스트가 빡센 문제가 있는걸로 안다) 더보기 풀이 def isPrime(num): import math if num == 2: return True if num == 1 or num ..

알고리즘/Python

[python] 프로그래머스 - 구명보트

출처 : 프로그래머스 코딩테스트 연습, https://programmers.co.kr/learn/courses/30/lessons/42885 코딩테스트 연습 - 구명보트 무인도에 갇힌 사람들을 구명보트를 이용하여 구출하려고 합니다. 구명보트는 작아서 한 번에 최대 2명씩 밖에 탈 수 없고, 무게 제한도 있습니다. 예를 들어, 사람들의 몸무게가 [70kg, 50kg, 80kg, 5 programmers.co.kr 더보기 첫 번째 풀이 : 효율성 테스트 실패 def solution(people, limit): people.sort() count = 0 while len(people) > 0: sum_w = 0 max_val = people.pop() sum_w += max_val for index in ra..

알고리즘/Python

[python] 프로그래머스 - 카펫

출처 : 프로그래머스 코딩테스트 연습, https://programmers.co.kr/learn/courses/30/lessons/42842 코딩테스트 연습 - 카펫 Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다. Leo는 집으로 돌아와서 아까 본 카펫의 노란색과 programmers.co.kr 더보기 풀이 def solution(brown, yellow): import math #yellow의 약수 중 각 +2하고 -4 한게 brown과 같은지 확인 divisors = [] for i in range(1, int(math.sqrt(yellow) + 1)): if yellow % i == 0: divisors...

제주도랏맨
'알고리즘' 카테고리의 글 목록 (14 Page)