코딩테스트/기초 48

백준 2231 분해합 - python

출처: https://www.acmicpc.net/problem/2231 2231번: 분해합 어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이 www.acmicpc.net 풀이 n = int(input()) for i in range(1, n+1): rlt = sum((map(int, str(i)))) tot_rlt = rlt + i if tot_rlt == n : print(i) break if i == n : print(0) 가장 중요한 부분은 rlt = sum((map(int, str(i))) 이 부분이다. str(i)를 i..

백준 2798 블랙잭 - python

출처 : https://www.acmicpc.net/problem/2798 2798번: 블랙잭 첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는 양의 정수이다. 합이 M을 넘지 않는 카드 3장 www.acmicpc.net 풀이: n,m = map(int,input().split()) card = list(map(int,input().split())) a= [] for i in card: for j in card: for k in card: if i + j+ k

백준 터렛 1002 - python

출처 : https://www.acmicpc.net/problem/1002 1002번: 터렛 각 테스트 케이스마다 류재명이 있을 수 있는 위치의 수를 출력한다. 만약 류재명이 있을 수 있는 위치의 개수가 무한대일 경우에는 -1을 출력한다. www.acmicpc.net 풀이: T = int(input()) for _ in range(T): x1,y1,r1,x2,y2,r2 = map(int,input().split()) d = ((x2 - x1) ** 2 + (y2 - y1) ** 2) **(1/2) if d == 0 and r1 == r2 : print(-1) elif abs(r1-r2)

백준 4153 직각삼각형 - python

https://www.acmicpc.net/problem/4153 4153번: 직각삼각형 입력은 여러개의 테스트케이스로 주어지며 마지막줄에는 0 0 0이 입력된다. 각 테스트케이스는 모두 30,000보다 작은 양의 정수로 주어지며, 각 입력은 변의 길이를 의미한다. www.acmicpc.net 풀이: while 1: a= list(map(int,input().split())) # [13,5,12] if a == [0,0,0]: break a.sort() if a[2]**2 == a[0]**2 + a[1]**2 : print('right') else: print('wrong') 입력을 제한없이 돌려야하므로 while 1: 을 써주고 0,0,0 이 입력되면 종료되도록해준다. 그리고 리스트 형태로 출력을 받아..

백준 3009 네 번째 점 - python

출처 : https://www.acmicpc.net/problem/3009 3009번: 네 번째 점 세 점이 주어졌을 때, 축에 평행한 직사각형을 만들기 위해서 필요한 네 번째 점을 찾는 프로그램을 작성하시오. www.acmicpc.net 풀이 : x1, y1 = map(int,input().split()) x2, y2 = map(int,input().split()) x3, y3 = map(int,input().split()) if x1 == x2: x4 = x3 elif x1 == x3: x4 = x2 else : x4 = x1 if y1 == y2 : y4 = y3 elif y1 == y3: y4 = y2 else: y4 = y1 print(x4,y4) 다른 풀이도 보겠지만 그냥 내풀이는 생략하겠다...

백준 1085 직사각형에서 탈출 - python

풀이: https://www.acmicpc.net/problem/1085 1085번: 직사각형에서 탈출 한수는 지금 (x, y)에 있다. 직사각형은 각 변이 좌표축에 평행하고, 왼쪽 아래 꼭짓점은 (0, 0), 오른쪽 위 꼭짓점은 (w, h)에 있다. 직사각형의 경계선까지 가는 거리의 최솟값을 구하는 프로그램 www.acmicpc.net 풀이: x,y,w,h = map(int,input().split()) print(min(abs(w-x),abs(h-y),abs(x),abs(y))) 방법이 벽에 닿는게 w-x, x , h-y ,y 이렇게 4개 뿐이다. 절댓값 해서 min하면 된다.

백준 9020 골드바흐의 추측 - python

출력: https://www.acmicpc.net/problem/9020 9020번: 골드바흐의 추측 1보다 큰 자연수 중에서 1과 자기 자신을 제외한 약수가 없는 자연수를 소수라고 한다. 예를 들어, 5는 1과 5를 제외한 약수가 없기 때문에 소수이다. 하지만, 6은 6 = 2 × 3 이기 때문에 소수가 아 www.acmicpc.net 풀이: def prime_list(n): prime = [True] * (n+1) m = int(n**0.5) if n 결국은 합이 a 4. 위와 같은 방식으로 진행할것이고 여기서 반으로 나누고 -1, +1 을 하면서 그 수가 소수가 된다면 그 값은 문제의 답일 것이다. 그래서 while 문에서 두 수가 소수라면 출력하고 멈추고 그것이 아니라면 a는 -1 b는 +1 을 ..