Algorithm(71)
-
프로그래머스 [괄호 회전하기]
https://school.programmers.co.kr/learn/courses/30/lessons/76502 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 백준에서도 올바른 괄호와 관련되어 비슷한 문제를 풀었던 기억이 있다. 근데 어떻게 풀었는지 잘 떠오르지 않아서 생각나는 대로 일단 적어봤다. 하지만 14번 테스트 케이스에서 실패했다. '{(})'와 같은 경우가 실패 요인이다. def solution(s): s = list(s) answer = 0 for j in range(len(s)): s.append(s.pop(0)) big = 0 mi..
2024.04.08 -
백준 9012 풀이
문제 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 부른다. 한 쌍의 괄호 기호로 된 “( )” 문자열은 기본 VPS 이라고 부른다. 만일 x 가 VPS 라면 이것을 하나의 괄호에 넣은 새로운 문자열 “(x)”도 VPS 가 된다. 그리고 두 VPS x 와 y를 접합(concatenation)시킨 새로운 문자열 xy도 VPS 가 된다. 예를 들어 “(())()”와 “((()))” 는 VPS 이지만 “(()(”, “(())()))” , 그리고 “(()” 는 모두 VPS 가 아닌 문자열이다. 여러분은 입력으로 주어진 괄호 문자열..
2024.04.07 -
프로그래머스 [문자열 내 마음대로 정렬하기], [문자열 나누기]
[문자열 내 마음대로 정렬하기] https://school.programmers.co.kr/learn/courses/30/lessons/12915 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 def solution(strings, n): strings.sort(key= lambda x : (x[n], x)) return strings [문자열 나누기] 풀이 std : 각 부분 문자열의 가장 앞 글자이자 기준. count_std : std를 count한 횟수. count_diff : std가 아닌 글자를 count한 횟수. for문을 len(s)-1..
2024.04.06 -
프로그래머스 [나누어 떨어지는 숫자 배열], [행렬의 곱셈]
[나누어 떨어지는 숫자 배열] 풀이 def solution(arr, divisor): answer = [] for a in arr: if a%divisor == 0: answer.append(a) if not answer: answer.append(-1) else: answer.sort() return answer [행렬의 곱셈] 풀이 행렬곱을 배운 지 너무 오래돼서 식을 다시 찾아봐야 했다. 식만 알고 있다면 간단한 문제였다. def solution(arr1, arr2): len_x = len(arr1) len_y = len(arr2[0]) answer = [[0]*len_y for _ in range(len_x)] for i in range(len_x): for j in range(len_y): co..
2024.04.05 -
백준 19941 풀이
문제 https://www.acmicpc.net/problem/19941 19941번: 햄버거 분배 기다란 벤치 모양의 식탁에 사람들과 햄버거가 아래와 같이 단위 간격으로 놓여 있다. 사람들은 자신의 위치에서 거리가 $K$ 이하인 햄버거를 먹을 수 있다. 햄버거 사람 햄버거 사람 햄버거 사 www.acmicpc.net 기다란 벤치 모양의 식탁에 사람들과 햄버거가 아래와 같이 단위 간격으로 놓여 있다. 사람들은 자신의 위치에서 거리가 K 이하인 햄버거를 먹을 수 있다. 햄버거 사람 햄버거 사람 햄버거 사람 햄버거 햄버거 사람 사람 햄버거 사람 1 2 3 4 5 6 7 8 9 10 11 12 위의 상태에서 K = 1인 경우를 생각해보자. 이 경우 모든 사람은 자신과 인접한 햄버거만 먹을 수 있다. 10번의 ..
2024.04.04 -
프로그래머스 [기사단원의 무기]
풀이 전에 백준에서 약수를 구하는 문제를 풀었던 기억으로 수월하게 해결할 수 있었다. def solution(number, limit, power): answer = 0 for n in range(1, number+1): cnt = 2 for i in range(2, int(n**(1/2))+1): if n%i == 0: cnt += 2 if i**2 == n: cnt -= 1 if cnt > limit: answer += power else: answer += cnt return answer-1 의식의 흐름대로 적다가 answer-1을 반환하게 되었는데, 왜 이렇게 적었는지 생각하다가 cnt를 0부터 시작해서 answer만 반환하는 방법도 적어봤다. 실행 시간은 처음 코드가 더 빠르다. i**2 != ..
2024.04.03