본문 바로가기

전체 글229

[프로그래머스] Level1 푸드 파이트 대회(python) https://school.programmers.co.kr/learn/courses/30/lessons/134240 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 내가 작성한 코드 def solution(food): result = [] for i in range(1,len(food)): for j in range(food[i]//2): result.append(str(i)) result.append("0") for i in range(len(food)-1,0,-1): for j in range(food[i]//2): result.append(str.. 2023. 2. 15.
[프로그래머스] Level1 햄버거 만들기(python) https://school.programmers.co.kr/learn/courses/30/lessons/133502 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 내가 작성한 코드 def solution(ingredient): stack = [] result = 0 for i in ingredient: stack.append(i) if stack[-4:] == [1,2,3,1]: result+=1 del stack[-4:] return result 1. stack을 이용하면 시간초과 없이 문제를 해결할 수 있다. 2. slicing은 range 범위.. 2023. 2. 15.
[백준] 4949번 균형잡힌 세상(python) https://www.acmicpc.net/problem/4949 4949번: 균형잡힌 세상 각 문자열은 마지막 글자를 제외하고 영문 알파벳, 공백, 소괄호("( )"), 대괄호("[ ]")로 이루어져 있으며, 온점(".")으로 끝나고, 길이는 100글자보다 작거나 같다. 입력의 종료조건으로 맨 마지막에 www.acmicpc.net 1. 내가 작성한 코드 while True: arr = list(input()) if arr == ["."]: #.만나면 종료 break stack = [] for i in arr: if i == "[" or i == "(": stack.append(i) elif i == "]": if len(stack) != 0 and stack[-1] == "[": stack.pop() .. 2023. 2. 15.
[프로그래머스] Level1 숫자 짝꿍(python) https://school.programmers.co.kr/learn/courses/30/lessons/131128 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 내가 작성한 코드 from collections import Counter def solution(x, y): answer = '' x_dic = Counter(x) y_dic = Counter(y) d_dic = x_dic - y_dic #x와 y의 차이 result_dic = x_dic - d_dic #x에서 차이를 빼면 공통인 것이 나옴 if len(result_dic) == 0: #.. 2023. 2. 14.
[백준] 2630번 색종이 만들기(python) https://www.acmicpc.net/problem/2630 2630번: 색종이 만들기 첫째 줄에는 전체 종이의 한 변의 길이 N이 주어져 있다. N은 2, 4, 8, 16, 32, 64, 128 중 하나이다. 색종이의 각 가로줄의 정사각형칸들의 색이 윗줄부터 차례로 둘째 줄부터 마지막 줄까지 주어진다. www.acmicpc.net 1. 내가 작성한 코드 n = int(input()) #한 변의 길이 paper = [list(map(int, input().split())) for _ in range(n)] result = [] def cut(x,y,n): color = paper[x][y] #첫 paper의 색 for i in range(x, x+n): for j in range(y,y+n): if.. 2023. 2. 14.
[프로그래머스] Level1 크레인 인형뽑기 게임(python) https://school.programmers.co.kr/learn/courses/30/lessons/64061 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 내가 작성한 코드 def solution(board, moves): cnt = 0 #사라진 인형의 개수 stack = [] #바구니 for k in moves: for i in range(0,len(board)): if board[i][k-1] != 0: stack.append(board[i].pop(k-1)) board[i].insert(k-1,0) break if len(stack) >=.. 2023. 2. 14.
[알고리즘] 분할과 정복 + 문제풀이 1. 분할정복법(Divide Conquer)이란? 큰 문제를 나눌 수 없을 때까지 작은 문제로 분할해 문제의 답을 얻는 것 Divide => Conquer => Combine 재귀적인 분할을 이용하며, 알고리즘 수행시간은 점화식으로 표현 가능 ※ 재귀할 경우 바닥조건 정해주는 거 잊지 말기 2. 예시1) 거듭제곱 계산하기 2.1 선형 재귀 호출을 하는 경우 a = int(input()) #밑 n = int(input()) #지수 def power(a,n): if n == 1: return a else: return a * power(a, n-1) print(power(a,n) 2.2 선형 이중 재귀 호출을 하는 경우 a = int(input()) #밑 n = int(input()) #지수 def powe.. 2023. 2. 13.
[수학] 피보나치 수 구현하는 여러 방법 1. 피보나치 수 첫 번째 항을 0, 두 번째 항을 1로 한 후, 이후의 항들은 이전의 두 항을 더한 값으로 이루어진 수열 2. 재귀함수 이용하기 => 비효율 n = int(input()) def fibo(n): if n == 0 or n == 1: return n else: return fibo(n-1) + fibo(n-2) print(fibo(n)) 3. 행렬 이용하기 n = int(input()) def fibo(n): f1 = 0 f2 = 1 for i in range(2, n+1): f3 = f1 + f2 f1 = f2 f2 = f3 return f2 print(fibo(n)) 4. list 이용하기 n = int(input()) def fibo(n): arr = [0,1] for i in ra.. 2023. 2. 13.
[프로그래머스] Level1 로또의 최고 순위와 최저 순위(python) https://school.programmers.co.kr/learn/courses/30/lessons/77484 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 내가 작성한 코드 def solution(lottos, win_nums): lank = {0:6,1:6,2:5,3:4,4:3,5:2,6:1} cnt = 0 answer = [] for i in lottos: print(i) if i in win_nums: cnt += 1 answer.append(lank[cnt + lottos.count(0)]) answer.append(lank[cnt]) .. 2023. 2. 13.