본문 바로가기

백준

(25)
[플로이드워셜] 백준 11404번 '플로이드' (Python) https://www.acmicpc.net/problem/11404 11404번: 플로이드 첫째 줄에 도시의 개수 n이 주어지고 둘째 줄에는 버스의 개수 m이 주어진다. 그리고 셋째 줄부터 m+2줄까지 다음과 같은 버스의 정보가 주어진다. 먼저 처음에는 그 버스의 출발 도시의 번호가 www.acmicpc.net 모든 도시에 대한 비용을 구해야 하므로 플로이드 워셜 알고리즘 활용 시작 도시와 도착 도시를 연결하는 노선은 하나가 아닐 수 있으므로, 최소비용인 노선을 그래프에 입력 노선이 없으면 비용을 0으로 처리 '''입력 예시 5 14 1 2 2 1 3 3 1 4 1 1 5 10 2 4 2 3 4 1 3 5 1 4 5 3 3 5 10 3 1 8 1 4 2 5 1 7 3 4 2 5 2 4 ''' n = in..
[재귀함수] 백준 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..
[진법변환] 백준 5692번 '팩토리얼 진법' (Python) https://www.acmicpc.net/problem/5692 5692번: 팩토리얼 진법 상근이는 보통 사람들이 사는 것과는 조금 다른 삶을 사는 사람이다. 상근이는 이런 사람들의 시선이 부담스럽기 때문에, 자신만의 숫자를 개발하기로 했다. 바로 그 이름은 팩토리얼 진법이다. www.acmicpc.net 팩토리얼 공식(n! = 1*2*3*...*(n-1)*n)을 알아야 풀 수 있음 Ex) 719 ==> (7 * 팩토리얼(3)) + (1 * 팩토리얼(2)) + 9 * 팩토리얼(1)) 입력이 몇 줄로 이루어지는지 모르므로 무한루프로 입력을 받고 계산하고 계산이 끝나면 바로 출력한다. '0'을 받으면 루프를 종료한다. '''입력 예제 719 1 15 110 102 0 ''' import sys def fa..
[탐욕법] 백준 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..
[정렬] 난이도1, 백준 18310번 '안테나' (Python) https://www.acmicpc.net/problem/18310 18310번: 안테나 첫째 줄에 집의 수 N이 자연수로 주어진다. (1≤N≤200,000) 둘째 줄에 N채의 집에 위치가 공백을 기준으로 구분되어 1이상 100,000이하의 자연수로 주어진다. www.acmicpc.net 집의 위치가 정렬되어 있지 않으므로 정렬 정렬 후 배열의 중앙값에 안테나를 설치했을 때 거리의 총합이 최소가 됨 집의 개수를 반으로 나누면 중앙값이 나옴. 단, 배열은 0부터 시작하므로 1을 빼줌 '''입력예시 4 5 1 7 9 ''' n = int(input()) house = list(map(int,input().split())) house.sort() print(house[(n-1)//2]) 필요 없이 주어지는 입..
[정렬] 백준 10825번 '국영수' (Python) https://www.acmicpc.net/problem/10825 10825번: 국영수 첫째 줄에 도현이네 반의 학생의 수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 한 줄에 하나씩 각 학생의 이름, 국어, 영어, 수학 점수가 공백으로 구분해 주어진다. 점수는 1보다 크거나 같고, 1 www.acmicpc.net 학생 수가 100,000 이하이므로 효율적으로 값을 처리하기 위해 입력 값을 sys 라이브러리 사용 이름과 성적들이 짝을 이루기 때문에 dict 사용 정렬 조건이 여러 개이므로, 요구하는 조건 반대 순서대로 정렬 처리 '''입력예시 12 Junkyu 50 60 100 Sangkeun 80 60 50 Sunyoung 80 70 100 Soong 50 60 90 Haebin 50..

LIST