본문 바로가기

반응형

백준

[백준] 3053번 - 택시 기하학 0. 코드 import math r = int(input()) print(r*r*math.pi) print(2*r*r) 1. 문제 https://www.acmicpc.net/problem/3053 19세기 독일 수학자 헤르만 민코프스키는 비유클리드 기하학 중 택시 기하학을 고안했다. 택시 기하학에서 두 점 T1(x1,y1), T2(x2,y2) 사이의 거리는 다음과 같이 구할 수 있다. D(T1,T2) = |x1-x2| + |y1-y2| 두 점 사이의 거리를 제외한 나머지 정의는 유클리드 기하학에서의 정의와 같다. 따라서 택시 기하학에서 원의 정의는 유클리드 기하학에서 원의 정의와 같다. 원: 평면 상의 어떤 점에서 거리가 일정한 점들의 집합 반지름 R이 주어졌을 때, 유클리드 기하학에서 원의 넓이와, 택.. 더보기
[백준] 9029번 - 골드바흐의 추측 1. 문제 https://www.acmicpc.net/problem/9020 2. 코드 import math sosu = [] for i in range(2, 10000): flag = 0 temp = int(math.sqrt(i)) for j in range(2, temp+1): if i%j == 0: flag = 1 if flag == 0: sosu.append(i) n = int(input()) for i in range(n): num = int(input()) for j in range(num//2, 1, -1): if (j in sosu) and (num-j in sosu): print(j, num-j) break 3. 알고리즘 1) 1~10000까지 모든 소수를 sosu라는 리스트에 저장 2).. 더보기
[백준] 4948번 - 베르트랑 공준 (파이썬) 1. 문제 2. 코드 import sys import math sosu = [0 for i in range(123457*2)] sosu[1] = 0 sosu[2] = 1 for i in range(2, 123457*2): temp_i = int(math.sqrt(i)) flag = 0 for j in range(2, temp_i+1): if i%j == 0: flag = 1 break if flag == 0: sosu[i] = 1 while 1: n = int(input()) #n = int(sys.stdin.readline()) cnt = 0 if n == 0: break for i in range(n+1, 2*n+1): if sosu[i] == 1: cnt += 1 sys.stdout.write(st.. 더보기
[백준] 11650번 - 좌표 정렬하기 (파이썬) (feat. lambda) 1. 문제 https://www.acmicpc.net/problem/11650 2. 코드 import sys n = int(input()) l = [] for i in range(n): l.append(list(map(int, input().split()))) l.sort(key = lambda x: (x[0], x[1])) for i in range(n): sys.stdout.write('%d %d\n'%(l[i][0], l[i][1])) 3. 주요 포인트 처음에는 딕셔너리로 받아오려했으나 정렬에 어려움이 있었다. 그래서 list형태로 받아오고 lambda로 정렬하였다. lambda는 ''''lambda 인자 : 표현식 '''' 형태로 사용된다. 함수를 아주 간단하게 사용할 수 있다. ex) map(l.. 더보기
[백준] 1463번 - 1로 만들기 (파이썬 코드) (feat. DP) 1. 문제 https://www.acmicpc.net/problem/1463 2. 코드 n = int(input()) dp = [0 for i in range(n+1)] for i in range(2, n+1): dp[i] = dp[i-1] + 1 if i%3 == 0: dp[i] = min(dp[i], dp[i//3]+1) if i%2 == 0: dp[i] = min(dp[i], dp[i//2]+1) print(dp[n]) 3. 알고리즘 점화식 : dp[N] = min(dp[N-1], dp[N//2] , dp[N//3]) + 1 1) 1을 빼준 경우를 우선 저장해놓는다. 2) 3으로 나뉠 경우, 1을 빼준 경우와 비교해서 최솟값을 저장한다. 3) 2로 나뉠 경우, 1을 빼준 경우(만약 2)에서 3으로 .. 더보기
[백준] 2108번 - 통계학 (파이썬 풀이) (feat. collections, sys) 1. 문제 https://www.acmicpc.net/problem/2108 수를 처리하는 것은 통계학에서 상당히 중요한 일이다. 통계학에서 N개의 수를 대표하는 기본 통계값에는 다음과 같은 것들이 있다. 단, N은 홀수라고 가정하자. 산술평균 : N개의 수들의 합을 N으로 나눈 값 중앙값 : N개의 수들을 증가하는 순서로 나열했을 경우 그 중앙에 위치하는 값 최빈값 : N개의 수들 중 가장 많이 나타나는 값 범위 : N개의 수들 중 최댓값과 최솟값의 차이 N개의 수가 주어졌을 때, 네 가지 기본 통계값을 구하는 프로그램을 작성하시오. (시간 초과 때문에 왕왕 고생한 이번문제,,,,,) 2. 코드 from collections import Counter import sys n = int(input()) .. 더보기
[백준] 2581번 - 소수 / 파이썬 코드 1. 문제 https://www.acmicpc.net/problem/2581 자연수 M과 N이 주어질 때 M이상 N이하의 자연수 중 소수인 것을 모두 골라 이들 소수의 합과 최솟값을 찾는 프로그램을 작성하시오. 예를 들어 M=60, N=100인 경우 60이상 100이하의 자연수 중 소수는 61, 67, 71, 73, 79, 83, 89, 97 총 8개가 있으므로, 이들 소수의 합은 620이고, 최솟값은 61이 된다. 2. 코드 #https://www.acmicpc.net/problem/2581 min_n = int(input()) max_n = int(input()) sosu = [] for i in range(min_n, max_n+1): flag = 0 if i != 1: for j in range(.. 더보기
[백준] 2839번 - 설탕 배달 (파이썬 ) 1. 문제 https://www.acmicpc.net/problem/2839 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그램 봉지와 5킬로그램 봉지가 있다. 상근이는 귀찮기 때문에, 최대한 적은 봉지를 들고 가려고 한다. 예를 들어, 18킬로그램 설탕을 배달해야 할 때, 3킬로그램 봉지 6개를 가져가도 되지만, 5킬로그램 3개와 3킬로그램 1개를 배달하면, 더 적은 개수의 봉지를 배달할 수 있다. 상근이가 설탕을 정확하게 N킬로그램 배달해야 할 때, 봉지 몇 개를 가져가면 되는지 그 수를 구하는 프로그램을 작성하시오. 2. 코드 n = int(input()) cnt =.. 더보기

반응형