Algorithm

Algorithm

[Swift] 프로그래머스 - 짝지어 제거하기

import Foundation func solution(_ word:String) -> Int{ var stack: [Character] = [] for char in word { if stack.last == char{ stack.removeLast() } else{ stack.append(char) } } return stack.isEmpty ? 1 : 0 } Stack 문제입니다. 함수의 파라미터로 주어진 word를 for 문으로 순회하면서 stack에 있는 값과 비교하면 됩니다. stack의 마지막 값과 현재 글자가 동일하면 마지막 값을 제거합니다. (*비어있는 값에 stack.last 를 사용해도 nil 값이 반환되기 때문에 에러는 발생하지 않습니다.) 마지막 값과 동일하지 않다면 현재 글자를..

Algorithm

백준 2800 괄호제거 [Python]

def combination(start, length): for i in range(start, length): first, end = pair[i] line[first] = line[end] = "" answer.add("".join(line)) combination(i + 1, length) line[first] = "(" line[end] = ")" # 괄호의 선택이 중복되지 않은 조합을 생성한다. line = list(input()) pair = [] stack = [] answer = set() for index in range(len(line)): if line[index] == "(": stack.append(index) elif line[index] == ")": first = stack...

Algorithm

[프로그래머스] 점 찍기

import math def solution(k, d): answer = 0 for x in range(0, d + 1, k): y = math.sqrt(d ** 2 - x ** 2) # 원의 방정식을 사용해서 y의 값을 구한다. answer += y // k + 1 # y를 k로 나눠서 y 좌표의 갯수를 구한다. return answer d 거리 안에 포함되는 좌표를 찾는 문제입니다. 가장 쉽게 떠올릴 수 있는 방법은 O(n^2) 의 시간복잡도가 사용되기 때문에 수학적인 접근 방법으로 풀어야 합니다. 위 문제는 원의 방정식을 사용해서 풀 수 있습니다. x 또는 y 를 기준으로 for문을 통해 k개 만큼 증가시키면서 (위 답안에서는 x 기준) d 만큼의 반지름을 갖는 원을 그립니다. 원의 방정식을 이용해..

Algorithm

백준 2529 부등호 [파이썬]

def combination(k, used, time): if k == N + 1: result = ''.join(map(str, selected)) print(result) if time: exit() // 최소값까지 구했으면 프로그램을 종료한다. nums.reverse() combination(0, 0, 1) // 최대값을 구했으면 최소값을 구하기 위한 재귀를 시작 return for i in range(10): if used & (1 0: if inequality[k - 1] == '' and not selected[k - 1] > nums[i]: continue // 부등호와 일치하지 않을 때는 재귀호출을 하지 않는다. selected[k] = nums[i] combination(k + 1, us..

배고픈개발자
'Algorithm' 카테고리의 글 목록 (6 Page)