문제 2839번: 설탕 배달 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그 www.acmicpc.net 풀이 (Python) N=int(input()) share=N//5 min_number=N kg5_count,kg3_count=0,0 for i in range(share,-1,-1): if (N-5*i)%3==0: kg5_count=i kg3_count=(N-5*i)//3 if min_number>kg5_count+kg3_count and(kg5_count>0 or kg3_count>0): min_number=kg5_count+kg3_count if kg5_coun..
파이썬
문제 14916번: 거스름돈 첫째 줄에 거스름돈 액수 n(1 ≤ n ≤ 100,000)이 주어진다. www.acmicpc.net 풀이 (Python) n=int(input()) count=0 while n>=0: if n%5==0: #5로 나눠진다면 전부 다 나누기 print(n//5+count) break n-=2 #-2반복 count+=1 #2원을 거슬러 준 횟수를 count에 저장 if n
문제 20365번: 블로그2 neighbor 블로그를 운영하는 일우는 매일 아침 풀고 싶은 문제를 미리 정해놓고 글을 올린다. 그리고 매일 밤 각각의 문제에 대하여, 해결한 경우 파란색, 해결하지 못한 경우 빨간색으로 칠한 www.acmicpc.net 풀이 (Python) n=int(input()) arr=list(input()) def check(): #전체 원소가 같은 색깔인지 점검하는 함수 for i in range(1,len(arr)): if arr[i-1]!=arr[i]: return False return True def paint_count(): arr_B,arr_R,result=0,0,0 if len(arr)==1 or check(): #예외처리 arr가 1개만 입력되거나 전체 원소가 같은..
문제 20115번: 에너지 드링크 페인은 에너지 드링크를 좋아하는 회사원이다. 에너지 드링크는 카페인, 아르기닌, 타우린, 나이아신 등의 성분이 들어있어 피로 회복에 도움을 주는 에너지 보충 음료수이다. 야근을 마치고 한 www.acmicpc.net 풀이 (Python) #많은 양을 남기고 적은양을 /2값하여 많은 에너지 드링크에 합치면 되는 문제 n=int(input()) arr=list(map(int,input().split())) max_drink=max(arr) arr.remove(max_drink) #제일 큰 값 제외 전부 /2하여 큰값에 더하면 되기 때문에 for ele in arr: #for문을 통해 제일 큰 값에 계속 더해주기 max_drink+=ele/2 print(max_drink) 설..
문제 1343번: 폴리오미노 첫째 줄에 사전순으로 가장 앞서는 답을 출력한다. 만약 덮을 수 없으면 -1을 출력한다. www.acmicpc.net 풀이 (Python) arr=list(input()) def poli(): count=0 for i in range(len(arr)): #x의 개수가 4개 연속으로 있다면 A로 대체하기 위한 for문 if arr[i]=="X": count+=1 else: count=0 if count==4: for j in range(4): arr[i-j]="A" count=0 count=0 for i in range(len(arr)): #x의 개수가 3개가 남아있는 case가 있다면 false리턴을 위한 for문 if arr[i]=="X": count+=1 else: cou..
문제 28278번: 스택 2 첫째 줄에 명령의 수 N이 주어진다. (1 ≤ N ≤ 1,000,000) 둘째 줄부터 N개 줄에 명령이 하나씩 주어진다. 출력을 요구하는 명령은 하나 이상 주어진다. www.acmicpc.net 풀이 (Python) import sys input=sys.stdin.readline n=int(input()) input_arr=[] stack=[] def is_empty(): if len(stack)==0: return True return False for _ in range(n): input_arr=list(map(int,input().split())) if input_arr[0]==1: stack.append(input_arr[1]) elif input_arr[0]==2: ..
문제 2164번: 카드2 N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가 www.acmicpc.net 풀이 (Python) from collections import deque n=int(input()) queue=deque() for i in range(1,n+1):queue.append(i) while True: if len(queue)==1: break queue.popleft() queue.append(queue[0]) queue.popleft() print(*queue) 설명 (Python) 설명과 함께 첫 풀이 과정으로 풀이하겠다. 문제에서 제시..
문제 11279번: 최대 힙 첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0 www.acmicpc.net 풀이 (Python) import heapq import sys N=int(input()) num=0 Heapq=[] for i in range(N): num=int(sys.stdin.readline()) if num==0: if len(Heapq)==0:print(0) else: print(-Heapq[0]) heapq.heappop(Heapq) else: heapq.heappush(Heapq,-num) 설명 (Python) 힙(He..
│문제 11726번: 2×n 타일링 2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다. www.acmicpc.net │풀이 (Python) memo={0:0,1:1,2:2} def tileFill(n): if n in memo: return memo[n] else: memo[n]=tileFill(n-1)+tileFill(n-2) return memo[n] n=int(input()) print(tileFill(n)%10007) │설명 (Python) 2xn 타일링 문제 풀이에 관해 생각의 흐름은 경우의 수이다. 세로로 한개의 타일이 있다고 가정할 때 다음 타일이 올 수 있는 경우의 수는 2개이..
│문제 9461번: 파도반 수열 오른쪽 그림과 같이 삼각형이 나선 모양으로 놓여져 있다. 첫 삼각형은 정삼각형으로 변의 길이는 1이다. 그 다음에는 다음과 같은 과정으로 정삼각형을 계속 추가한다. 나선에서 가장 긴 변의 www.acmicpc.net │풀이 T=int(input()) memo ={1:1,2:1,3:1,4:2,5:2} def equilTriangle(n): if n in memo: return memo[n] memo[n]=equilTriangle(n-5)+equilTriangle(n-1) return memo[n] for i in range(T): print(equilTriangle(int(input()))) │설명 왼쪽의 그림을 보고 규칙을 찾기 위해 첫 번째 삼각형을 A1, n번째 삼각형..