본문 바로가기
728x90

백준알고리즘5

Backjoon 12852번 1로 만들기 2 백준 알고리즘 12852번 1로 만들기 2 파이썬을 사용하였습니다. 단계별로 풀어보기 동적 계획법과 최단거리 역추적에 1번째 문제로 분류되어있는 문제입니다. 입력 입력 X 를 받습니다. X를 3으로 나누는 방법, 2로 나누는 방법, 1을 빼는 방법의 연산을 사용해 X를 1로 만듭니다. X를 1로 만드는데 가장 적게 연산한 방법을 찾아 출력합니다. 저는 파이썬의 리스트를 이용해서 풀었습니다. 리스트를 순회 하며 나타날수 있는 경우를 모두 출력합니다. 리스트의 마지막에 3,2,1이 등장한다면 재귀를 종료합니다. 정답 코드 import sys sys.setrecursionlimit(10**6) def sol(n): te = [] for i in n: if i[-1]==1: return i elif i[-1]=.. 2020. 8. 6.
Backjoon 11047번 동전 0 백준 알고리즘 11047번 동전 0 파이썬을 사용하였습니다. 단계별로 풀어보기 그리디 알고리즘 첫번째 단계에 있는 문제입니다. 입력 첫줄에 N개의 동전종류와 금액 M이 주어집니다. N개의 동전종류의 가치가 주어집니다. 동전을 사용한 최소 갯수를 출력합니다. 간단하게 풀수있는 문제입니다. 동전을 가장 적게 사용하려면 비싼가치를 가진 동전을 최대한 많이 써야 합니다. 최대한 비싼 동전을 많이 쓰는 방법으로 생각하면 문제가 쉽게 풀립니다. 간단하게 설명하면 일단 동전의 가치를 하나의 리스트로 저장합니다. (money = [5,10,50,100,500,1000,5000,10000,50000]) 이제 주어진 M 즉 금액이 0이 될때 까지 반복문을 돌게 됩니다. (저는 K로 주었습니다) money 리스트의 가장 뒷.. 2020. 8. 6.
Backjoon 10869번 사칙연산 백준 알고리즘 10869번 사칙연산 파이썬을 사용하였습니다 주어진 조건에 따라 연산자를 이용하면 간단하게 풀수 있습니다. 정답 코드 a,b = map(int,input().split(' ')) print(a+b) print(a-b) print(a*b) print(a//b) print(a%b) 2020. 8. 6.
Backjoon 10816번 숫자 카드2 백준 알고리즘 10816번 숫자 카드2 파이썬을 사용하였습니다. 단계별로 풀어보기 이분 탐색에 2번째 문제로 분류되어있는 문제입니다. 입력 1번째 줄 입력에 입력 받을 카드의 수를 입력받습니다. 2번째 줄 입력에 카드의 번호를 입력받습니다. 3번째 줄 입력에 확인할 카드의 수를 입력받습니다. 4번째 줄 입력에 확인할 카드의 번호를 입력받습니다. 저는 파이썬의 딕셔너리를 이용해서 풀었습니다. 4번째 줄에서 입력받는 숫자가 딕셔너리에 있으면 답을 출력하고 만약 없으면 0을 출력합니다. 정답코드 n = int(input()) dic = {} n = list(map(int,input().split(' '))) for i in n: if i in dic: dic[i]+=1 else: dic[i]=1 n = int.. 2020. 8. 5.
728x90