알고리즘/백준(31)
-
영화감독 숌 [ Python ] [ 백준 : 1436 ]
풀이 및 회고 이 문제를 봤을때 문제가 정말 이해가 안되었다. 20분도 넘게 문제만 본 느낌이다. 예제에 10의 자리까지 보여줬으면 쉽게 유추할 수 있었을 것같은데 덕분에 숌만 욕했다. 최소 666이 포함되어야하고 1666, 2666, ... 6666, 6660, 6661 이런식으로 값이 올라가는 것 같았다. 문제에 대한 구현을 어려워 하던중 페어프로그래밍을 같이하시던 신범님이 list 에 666이 포함된 값을 넣어 반복해 찾는 방법으로 하면 될 것 같다고 아이디어를 내주셨고 풀이에 옮기셨다. 루프를 리스트의 크기가 n 보다 적을때까지 반복하고 루프안에서 i 가 666이 포함된 값이라면 리스트에 값을 넣는다. 그리고 리스트의 가장 마지막 값을 출력하면 정답이 나온다. # 영화감독 숌 n = int(inp..
2023.05.25 -
거스름돈 [ Python ] [ 백준 : 14916 ]
풀이 및 회고 그리디 문제이므로 큰것부터 빼는 걸로 접근하고 for 문을 사용해 문제를 풀려고 했었다. 하지만 내가생각하는 것 처럼 해가 나오지 않았고 방법을 바꿔 큰것부터가 아닌 적은것 부터 빼는 걸로하고 for 문 대신 while 문을 사용하는걸로 정했다. 2를 먼저빼주면서 카운트 해주고 5의 배수가 된다면 5를 빼고 카운트해줌으로서 값에 도달했다. 문제를 제출하고 코드를 더 바꾸고 싶어 변화를 주었고 변화를 준 코드도 정답에 도달했다. # # 거스름돈 # # 처음 작성한 코드 # n = int(input()) # coin = [5, 2] # count = 0 # while True: # if n % coin[0] == 0: # 5의 배수인 경우 # count = count + n // coin[0]..
2023.05.25 -
최소공배수 [ Python ] [ 백준 : 1934 ]
풀이 및 회고 문제를 보자마자 떠오른것이 있었다. 분명 최소공배수를 구할수 있는 메소드가 있었던거 같은데.. 그래서 math 라이브러리를 검색해 찾아보았다. lcm 이라는 메서드를 이용하면되는데 너무 쉽게 구할 수 있었다. 이 문제는 파이썬에서 쓸 수 있는 반칙같은 느낌이었다. 죄책감이 들었던 문제입니다 허허 # 최소 공배수 import math N = int(input()) for i in range(N): a, b = map(int, input().split()) t = math.lcm(a, b) print(t)
2023.05.24 -
ATM [ Python ] [ 백준 : 11399 ]
풀이 및 회고 동전 0 과 마찬가지로 그리디 문제입니다. 이 문제를 페어 프로그래밍 진행하면서 멋진 코드가 나오게 해준 팀원분께 감사합니다. 반복문에 이용하는 로직을 변수를 하나 더 선언해서 빼서 그 변수에 값을 넣는 구상을 했는데 별도 변수선언 없이 한번에 풀 수 있었다는 것이 놀라웠습니다. 알고리즘은 규칙성을 찾고 효율적으로 푸는게 정말 중요한 것 같습니다. # ATM N = input() T = list(map(int, input().split())) T.sort() for i in range(1, len(T)): T[i] = T[i-1] + T[i] print(sum(T))
2023.05.24 -
동전 0 [ Python ] [ 백준 : 11047 ]
풀이 및 회고 제가 좋아하는 그리디 문제입니다. 이 문제를 푸는데는 이코테 책이 도움이 되었습니다. 책에서 나온 거스름돈 문제와 상당히 유사했습니다. 문제를 보자마자 그 로직을 떠올릴 수 있었고 실행에 옮겼습니다. 이게왠일 한번에 통과되어 기쁨을 만끽했습니다 허허허허 # 동전 0 n, k = map(int, input().split()) coin = [] for i in range(n): coin.append(int(input())) coin.sort(reverse=True) count = 0 for i in coin: count = count + k // i # k = 4200 , i = 5000 일땐 몫이 없기떄문에 0 이들어감 # k = 4200 , i = 1000 일때 나눈 몫 4 를 count ..
2023.05.24 -
회전하는 큐 [ Python ] [ 백준 : 1021 ]
풀이 및 회고 문제가 이해가 안되서 어려웠던문제였다. 문제만 20분은 본거같습니다 ㅠ 문제를 보자마자 deque 를 이용해야겠다는 생각이 들었다. 왜냐하면 큐 2 문제를 풀었을때 시간초과가 나왔으니 이문제도 마찬가지일 것이고 무엇보다 큐이기때문이다. deque 메서드 중에 rotate 메서드가 있었다. 이 메서드는 값이 양수면 오른쪽으로 회전하고 홀수면 왼쪽회전을 하는데 이를 이용하면 쉽게 구현이 가능할 거라고 생각했다. 금방 구현한듯 싶어 기분이 좋던와중 값을찍어보니 무한루프가 되었다. 문제를 찾고 코드를 읽어보고 공책에 쓰기도 해보는데 진짜 억울하게도 if-else 가 문제였다. 분하기도하고 풀어서 기쁘기도하고 오묘한느낌.. # 회전하는 큐 # 큐의 크기 N # 뽑아내려는 수 M # M 은 N 보다 ..
2023.05.24