본문 바로가기

전체 글163

20210706#(62) 백준 5585 거스름돈 (그리디) https://www.acmicpc.net/problem/5585 5585번: 거스름돈 타로는 자주 JOI잡화점에서 물건을 산다. JOI잡화점에는 잔돈으로 500엔, 100엔, 50엔, 10엔, 5엔, 1엔이 충분히 있고, 언제나 거스름돈 개수가 가장 적게 잔돈을 준다. 타로가 JOI잡화점에서 물건을 사 www.acmicpc.net N=int(input()) joi=[500,100,50,10,5,1] count=0 N=1000-N while N!=0: if N>=joi[0]: N-=joi[0] count+=1 elif N>=joi[1]: while N>=joi[1]: N-=joi[1] count+=1 elif N>=joi[2]: while N>=joi[2]: N-=joi[2] count+=1 elif N.. 2021. 7. 6.
20210705#(61) 백준 11047 동전 0 (그리디) https://www.acmicpc.net/problem/11047 11047번: 동전 0 첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수) www.acmicpc.net 그리디 문제 잼있다 이렇게 풀면 효율이 떨어지는 것 같긴 한데 일단 풀어봤다. n,k=map(int,input().split()) coin_list=[] coin_count=0 for i in range(n): coin_list.append(int(input())) coin_list.sort(reverse=True) for i in .. 2021. 7. 5.
20210705#(60) 백준 11399 ATM (그리디) https://www.acmicpc.net/problem/11399 11399번: ATM 첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000) www.acmicpc.net 책에서 그리디 문제들을 풀다보니 재밌어서 백준에서 풀어본 그리디문제.. 첫째 줄에 각 사람이 돈을 인출하는데 필요한 시간의 합의 최솟값을 출력한다. 가 조건인 문제이다. 그래서 만약 3 4 1 2 5가 입력되면 1 2 3 4 5 순서로 배치해야 더했을때 최소가 되는걸 확인할 수 있다. 위 1 2 3 4 5 로 배치했을때 계산 결과는 1 + (1+2) + (1+2+3) + (1+2+3+4) + (1+2+3+4+5) 이다. 내가 .. 2021. 7. 5.
20210705#(59) 책-이것이 취업을 위한 코딩 테스트다 with 파이썬 (그리디, 구현 총 4문제 풀이) 부서에 이것이 취업을 위한 코딩 테스트다 라는 책이 들어오게 돼서 야간 근무 때 한번 풀어봤다! 결국 책 주문신청하게 됨 그리디 풀고 구현풀다가 졸리기도 하고 집중이 안돼서 더 이상 풀지는 못했다.. 다음엔 더욱 많이 풀기 도전 # 이코테 큰 수의 법칙 그리디 1 counting=0 count=0 n,m,k=list(map(int,input().split())) num_list=list(map(int,input().split())) num_list.sort(reverse=True) for i in range(m): counting+=1 if counting==k: count+=num_list[1] counting=0 else: count+=num_list[0] print(count) # 이코테 숫자카드게.. 2021. 7. 5.
20210703#(58) 백준 10828번 스택 https://www.acmicpc.net/problem/10828 10828번: 스택 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net dfs,bfs 를 풀기전 먼저 기본적인 자료구조 개념들을 흡수하기 위해 풀어봤다!.. 첨엔 코드 이해하는게 꽤 시간이 걸렸는데 보다보니까 간단한 코드였다. import sys N=int(sys.stdin.readline()) stack=[] for _ in range(N): word=sys.stdin.readline().split() #input으로 받게 되면 시간 초과 orde.. 2021. 7. 3.
6990원 손해본 이야기...(feat. aws 결제) 사지방에서 문제풀고있는데 갑자기 결제가 완료되었다는 문자가 왔다. ㅠㅠ Amazon_AWS 이전에 개발환경 구축하려고 만들었던 aws계정이 프리티어 기간이 끝나고 2번이나 결제가 된것이었다. 이제는 사용안하기 때문에 얼른 취소했다.. 내 아까운 7000원 ㅠㅠ 다음은 결제계정 취소 방법이다 계정에 로그인 한 뒤 오른쪽 위 계정이름을 누르면 내 계정으로 갈 수 있다. 내 계정에 들어가 스크롤 맨 밑으로 가게 되면 계정 해지라는 항목이 있는데, 체크박스를 확인 후 계정 해지를 하면 된다. 성공! 내 아까운 돈ㅠㅠ 이제 돈 나가는 곳 꼼꼼히 확인하는 습관을 길러야겠다. 2021. 7. 3.
20210703#(57) 백준 11727번 2 X n 타일링 2 (다이나믹 프로그래밍) https://www.acmicpc.net/problem/11727 11727번: 2×n 타일링 2 2×n 직사각형을 1×2, 2×1과 2×2 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×17 직사각형을 채운 한가지 예이다. www.acmicpc.net n=int(input()) if n==1: print(1) else: dp=[0 for _ in range(n+1)] dp[1]=1;dp[2]=3 for i in range(3,n+1): if i%2==1: #홀수 dp[i]=((dp[i-2]*4)+1)%10007 else: #짝수 dp[i]=((dp[i-2]*4)-1)%10007 print(dp[n]) n이 1일때 for 문에서 index out of range가 뜬다는 사실.. 2021. 7. 3.
20210702#(56) 백준 1149번 RGB거리 (다이나믹 프로그래밍) https://www.acmicpc.net/problem/1149 1149번: RGB거리 첫째 줄에 집의 수 N(2 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 각 집을 빨강, 초록, 파랑으로 칠하는 비용이 1번 집부터 한 줄에 하나씩 주어진다. 집을 칠하는 비용은 1,000보다 작거나 www.acmicpc.net home=[] N=int(input()) for i in range(N): home.append(list(map(int,input().split()))) for i in range(1,N): home[i][0]=min(home[i-1][1],home[i-1][2])+home[i][0] home[i][1]=min(home[i-1][0],home[i-1][2])+home[i][1.. 2021. 7. 2.
20210702#(55) 프로그래머스 가장 큰 수 (정렬) https://programmers.co.kr/learn/courses/30/lessons/42746 코딩테스트 연습 - 가장 큰 수 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 programmers.co.kr 풀다가 답이 안나와서 구글링을 통해 제출했다... def solution(numbers): numbers=list(map(str,numbers)) numbers.sort(key=lambda x:x*3,reverse=True) return str(int(''.join(numbers))) 1. list.. 2021. 7. 2.
728x90