파이썬 76

[백준/알고리즘/python/java] 1676번 - 팩토리얼 0 의 개수

시간제한이 2초여서 팩토리얼 함수를 재귀로 구현해도 무방한 문제 같았다. 주어진 n 에 따라 팩토리얼 함수로 n! 구하고 그 n! 을 string 화시켜서 뒤에서부터 0의 개수를 세면 되는 문제였다. (코드는 아래와 같다.-python) def factorial(n): # 팩토리얼을 구하는 재귀함수 if n == 0: return 1 elif n == 1: return 1 else: return factorial(n-1)*n def findzero(n): # 숫자 맨 뒤에 0이 몇개 있는지 출력하는 함수 cnt = 0 string_number = str(n) reverse_number = string_number[::-1] for s in reverse_number: if s != '0': break e..

[백준/알고리즘/python/java] 9375번 - 패션왕 신해빈

문제를 이해하면서, 파이썬의 딕셔너리 개념을 사용해야 한다고 생각했다. 딕셔너리는 기본적으로 중괄호({}) 를 사용해서 데이터를 묶는 형태를 띄며, 키(key)와 밸류(value)가 하나의 아이템(item)을 구성하게 된다. 즉, 딕셔너리에는 특정한 key값과 value 값이 서로 짝지어서 저장된다고 이해하면 편하다.(해쉬처럼 말이다.) 파이썬을 공부하면서 문제를 풀다 보니, 딕셔너리를 어떻게 사용해야 할지 감이 잘 안 왔다. 처음에 풀었던 코드는 아래와 같았다. (런타임 오류가 났었던 코드) testcase = int(input()) for test in range(testcase): n = int(input()) clothes = {} # clothes 라는 빈 딕셔너리 생성 for i in rang..

[백준/알고리즘/python/java] 13305번 - 주유소

전형적인 그리디 알고리즘 문제이다. 처음에는 계속 시간초과 문제를 해결하지 못했었다. 처음에 풀었던 코드는 이러했다. n = int(input()) roads = list(map(int, input().split())) prices = list(map(int, input().split())) total = prices[0] * roads[0] # 출발 도시의 기름가격 x 출발 도시와 두번째 도시 사이의 도로길이 previous_price = prices[0] # previous_price 에 우선 출발 도시의 가격 저장 # k 라는 변수를 1로 잡았다(두번째 도시와 세번째 도시 사이의 도로 길이 인덱스는 1 이므로) k = 1 # 도시 간격(도로 길이)를 나타내는 인덱스 for i in prices[1:..

[백준/알고리즘/python/java] 11399번 - ATM

최소값을 구하려면 우선, 시간을 오름차순으로 나열하는 것이 관건이다. 처음에는 map 함수를 통해서 여러개의 값을 받는 것을 list화 시켜서 정렬(sort)을 해야 하는데, 사용자에게 여러개의 값을 입력받을 때 number 값을 이용하는 줄 알고 애를 먹었다. 자바같은 언어에서는 보통 number 같은 변수를 입력 받아 for문을 돌면서 배열에 값을 넣어주기 때문이다. 하지만, 사용자에게 입력 받은 number는 나중에 값을 하나씩 더할 때 사용되는 것이고, 사용자에게 차례로 입력받은 값을 리스트에 넣으려면 그냥 map함수를 list() 해주면 됐다. 그리고 정렬을 할 때는 맨 처음에 애를 먹었던 것이 number = int(input()) time_list = map(int, input().split..

[백준/알고리즘/python/java] 11047번 - 동전 0

전형적인 그리디 알고리즘 문제이다. 주어진 금액을 만드는데 필요한 동전개수의 최소값을 구하는 것이므로, 주어진 금액에서 큰 금액을 빼가면서 개수를 구하면 최소 개수를 구할 수 있을 것이다. (맨 처음 풀었던 코드-시간초과) n, k = map(int, input().split()) coins = [] count = 0 for i in range(n): coins.append(int(input())) coins.reverse() standard = coins[0] for coin in coins: standard = coin if(k-standard = 0): k -= standard count += 1 print(count) 동전 리스..

반응형