Algorithm (37) 썸네일형 리스트형 [재귀함수] 백준 10872번 '팩토리얼' (Python) https://www.acmicpc.net/problem/10872 10872번: 팩토리얼 0보다 크거나 같은 정수 N이 주어진다. 이때, N!을 출력하는 프로그램을 작성하시오. www.acmicpc.net N! = 1*2*3*...(N-1)*N n이 1 또는 0일 때 1을 반환함 for문 보다 효율적인 재귀 함수 사용 ''' 10 0 ''' n = int(input()) def fac(n): if n==1 or n==0: return 1 return n * fac(n-1) print(fac(n)) [재귀함수] 백준 10829번 '이진수 변환' (Python) https://www.acmicpc.net/problem/10829 10829번: 이진수 변환 첫째 줄에 자연수 N이 주어진다. (1 ≤ N ≤ 100,000,000,000,000) www.acmicpc.net 10진수를 2진수로 바꿔주는 bin() 메서드 사용 bin() 메서드는 앞에 0b가 붙으므로 replace() 메서드로 제거 ''' 53 ''' n = int(input()) k = bin(n) print(k.replace("0b","")) 재귀 함수로도 풀어보기 10진수에서 2진수로 바꿀 때 지수 말고 몫, 나머지 활용하기 [진법변환] 백준 2745번 '진법 변환' (Python) https://www.acmicpc.net/problem/2745 2745번: 진법 변환 B진법 수 N이 주어진다. 이 수를 10진법으로 바꿔 출력하는 프로그램을 작성하시오. 10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 www.acmicpc.net 진법 변환하는 법을 알고 있어야 함 파이썬 내장 함수가 없는 진법이므로 진법 함수를 새로 만들어준다. 각 자릿수를 곱할 수 있게 자릿수를 만들어 줌 ''' ZZZZZ 36 ''' import sys input_data = sys.stdin.read().rsplit() N = input_data[0] B = int(input_data[1]) arr = [] mult = 1 sum_= 0 arr.app.. [탐욕법] 난이도1, 2019 국가 교육기관 코딩 테스트 '숫자 카드 게임' (Python) 숫자 카드 게임은 여러 개의 숫자 카드 중에서 가장 높은 숫자가 쓰인 카드 한 장을 뽑는 게임이다. 단, 게임의 룰을 지키며 카드를 뽑아야 하고 룰은 다음과 같다. 1. 숫자가 쓰인 카드들이 N x M 형태로 놓여 있다. 이때 N은 행의 개수를 의미하며, M은 열의 개수를 의미한다. 2. 먼저 뽑고자 하는 카드가 포함되어 있는 행을 선택한다. 3. 그다음 선택된 행에 포함된 카드들 중 가장 숫자가 낮은 카드를 뽑아야 한다. 4. 따라서 처음에 카드를 골라낼 행을 선택할 때, 이후에 해당 행에서 가장 숫자가 낮은 카드를 뽑을 것을 고려하여 최종적으로 가장 높은 숫자의 카드를 뽑을 수 있도록 전략을 세워야 한다. 예를 들어 3x3 형태로 카드들이 다음과 같이 놓여 있다고 가정하자. 3 1 2 4 1 4 2 .. [탐욕법] 난이도1, 2018 E 기업 알고리즘 대회 '1이 될 때까지' (Python) 어떠한 수 N이 1이 될 때까지 다음 두 과정 중 하나를 반복적으로 선택하여 수행하려고 한다. 단, 두 번째 연산은 N이 K로 나누어 떨어질 때만 선택할 수 있다. 1. N에서 1을 뺀다. 2. N을 K로 나눈다. 예를 들어서 N이 17, K가 4라고 가정하자. 이때 1번의 과정을 수행하면 N은 16이 된다. 이후에 2번의 과정을 두 번 수행하면 N은 1이 된다. 결과적으로 이 경우 전체 과정을 실행한 횟수는 3이 된다. 이는 N을 1로 만드는 최소 횟수이다. N과 K가 주어질 때 N이 1이 될 때까지 1번 혹은 2번의 과정을 수행해야 하는 최소 횟수를 구하는 프로그램을 작성하시오. 첫째 줄에 N(2 [탐욕법] 백준 10162번 '전자레인지' (Python) https://www.acmicpc.net/problem/10162 10162번: 전자레인지 3개의 시간조절용 버튼 A B C가 달린 전자레인지가 있다. 각 버튼마다 일정한 시간이 지정되어 있어 해당 버튼을 한번 누를 때마다 그 시간이 동작시간에 더해진다. 버튼 A, B, C에 지정된 시간은 www.acmicpc.net t가 a, b, c 보다 크면 t에서 a, b, c를 빼고, 1을 더해준다. t가 0이 되면 종료 t가 0이 되지 않을 수도 있는 경우는 10보다 작은 경우이므로 조건문 걸어줌 t가 0이면 결과값을 출력하고, 아니면 -1 출력 '''입력 예제 100 189 ''' t = int(input()) result = [0]*3 while t > 0: if t= 300: t -= 300 resul.. [완전탐색] 프로그래머스 L1 '모의고사' (Python) https://programmers.co.kr/learn/courses/30/lessons/42840 코딩테스트 연습 - 모의고사 수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는 programmers.co.kr 반복문 사용. 패턴을 answers 길이에 맞춤. 문제가 1개~10,000개일 경우 계산 채점할 수 있는 변수 필요. 가장 많이 맞춘 사람 걸러내기 #1차 시도 --> 몇개의 테스트케이스 실패 def solution(answers): answer = [] a1, a2, a3 = [],[],[] j=1 for i in answers: if i==j: a1.appe.. [큐] 프로그래머스 L2 '다리를 지나는 트럭' (Python) https://programmers.co.kr/learn/courses/30/lessons/42583 코딩테스트 연습 - 다리를 지나는 트럭 트럭 여러 대가 강을 가로지르는 일차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 알아내야 합니다. 다리에는 트럭이 최대 bridge_length대 올라갈 programmers.co.kr Queue 사용 def solution(bridge_length, weight, truck_weights): Q = [0] * bridge_length total_weight = 0 time = 0 while truck_weights: total_weight -= Q.pop(0) if total_weight + truck_weights.. 이전 1 2 3 4 5 다음