[백준_python] 체크판 다시 칠하기 || 1018(다시 도전)
·
🎯PS
www.acmicpc.net/problem/1018 1018번: 체스판 다시 칠하기첫째 줄에 N과 M이 주어진다. N과 M은 8보다 크거나 같고, 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 보드의 각 행의 상태가 주어진다. B는 검은색이며, W는 흰색이다.www.acmicpc.net이 문제는 일단 혼자서 생각해볼 시간도 부족하긴 했지만, 브루트포스 알고리즘으로 모든 경우를 다 거치기 위해 어떻게 해줘야 할지 정말 막막했다. 다른 분들 코드를 참고해보니, 8 x 8 체스판으로 만들어주며 주어진 체스판을 훑어주어야 해서 이를 위해 행과 열을 고정시켜주어야 했다.for i in range(n-7): for j in range(m-7): #8*8크기의 체스판을 위해 행,열 고정 cntW = 0..
[백준_python] 행렬 곱셈 || 2740
·
🎯PS
www.acmicpc.net/problem/2740 2740번: 행렬 곱셈첫째 줄에 행렬 A의 크기 N 과 M이 주어진다. 둘째 줄부터 N개의 줄에 행렬 A의 원소 M개가 순서대로 주어진다. 그 다음 줄에는 행렬 B의 크기 M과 K가 주어진다. 이어서 M개의 줄에 행렬 B의 원소 K개www.acmicpc.net# #행렬 곱셈 N , M = map(int, input().split(' ')) a = [] b = [] for _ in range(N): a.append(list(map(int, input().split(' ')))) M , K = map(int, input().split(' ')) for _ in range(M): b.append(list(map(int, input().split(' '))))..
[백준_python] 배수와 약수 || 5086
·
🎯PS
www.acmicpc.net/problem/5086 5086번: 배수와 약수각 테스트 케이스마다 첫 번째 숫자가 두 번째 숫자의 약수라면 factor를, 배수라면 multiple을, 둘 다 아니라면 neither를 출력한다.www.acmicpc.net주어진 조건대로 약수인지, 배수인지, 그 외인지 확인해주기만 하면 된다.!#배수와 약수 while True: a, b = map(int, input().split(' ')) if a == b == 0: break if b % a == 0: print("factor") elif a % b == 0: print("multiple") else: print("neither")
[백준_python] 수 정렬하기 || 2750
·
🎯PS
www.acmicpc.net/problem/2750 2750번: 수 정렬하기첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다.www.acmicpc.netn만큼 원하는 수를 받아서 리스트에 담고 정렬해주기!#수 정렬하기 n = int(input()) num = [] for _ in range(n): num.append(int(input())) num.sort() print(*num, sep = "\n")
[백준_python] 분해합 || 2231
·
🎯PS
www.acmicpc.net/problem/2231 2231번: 분해합 어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이 www.acmicpc.net 먼저 for문을 이용해서 1부터 차례대로 분해합을 구하고, n과 일치하면 생성자를 출력하면 된다.! #분해합 n = int(input()) result = 0 for i in range(1, n+1): arr = list(map(int, str(i))) #분해합 구하기 num = i + sum(arr) if num == n: result = i break print(result)
[백준_python] 피보나치 수 5 || 10870
·
🎯PS
www.acmicpc.net/problem/10870 10870번: 피보나치 수 5피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가www.acmicpc.net#피보나치 수 5 n = int(input()) a = 0 b = 1 c = 0 for _ in range(n-1): c = a + b a = b b = c if n == 0: b = 0 print(b)재귀로 푸는 문제여서 위처럼 for문을 이용하지 않고 풀었어야 했는데,,,#피보나치 수 5_2 (재귀로 풀기) def fibonacci(n): if n
[백준_python] 팩토리얼 || 10872
·
🎯PS
www.acmicpc.net/problem/10872 10872번: 팩토리얼0보다 크거나 같은 정수 N이 주어진다. 이때, N!을 출력하는 프로그램을 작성하시오.www.acmicpc.net#팩토리얼 from math import factorial n = int(input()) print(factorial(n))
[백준_python] 택시 기하학 || 3053
·
🎯PS
www.acmicpc.net/problem/3053 3053번: 택시 기하학첫째 줄에는 유클리드 기하학에서 반지름이 R인 원의 넓이를, 둘째 줄에는 택시 기하학에서 반지름이 R인 원의 넓이를 출력한다. 정답과의 오차는 0.0001까지 허용한다.www.acmicpc.net이 문제는 유클리드 기하학과 택시 기하학의 차이를 알 수 있었던 문제였다. 유클리드 기하학에서의 원의 넓이를 구할 때에는 평소 우리가 생각했던 원형 모양의 원으로 r x r x pi이다. 택시 기하학에서 출발(x1, y1) ~ 도착(x2, y2)사이의 거리를 구하는 공식은 D(t1, t2) = |x1-x2|+|y1-y2| 이다. 가운데 초록선이 유클리드이고 택시 기하학으로의 최단 거리는 파란선이다. 택시 기하학에서의 원의 모양은 마름모의 ..
[백준_python] 직각삼각형 || 4153
·
🎯PS
www.acmicpc.net/problem/4153 4153번: 직각삼각형입력은 여러개의 테스트케이스로 주어지며 마지막줄에는 0 0 0이 입력된다. 각 테스트케이스는 모두 30,000보다 작은 양의 정수로 주어지며, 각 입력은 변의 길이를 의미한다.www.acmicpc.net#직각삼각형 while True: a = list(map(int, input().split(' '))) if a == [0, 0, 0]: break a.sort() if a[2]**2 == a[0]**2 + a[1]**2: print("right") else: print("wrong")while로 무한 반복해주고, 받은 문자열을 숫자형으로 바꾸고 리스트로 묶어주었다. 그 후 그 리스트가 [0, 0, 0]이라면 break! 또는 sum..
[백준_python] 네 번째 점 || 3009
·
🎯PS
www.acmicpc.net/problem/3009 3009번: 네 번째 점세 점이 주어졌을 때, 축에 평행한 직사각형을 만들기 위해서 필요한 네 번째 점을 찾는 프로그램을 작성하시오.www.acmicpc.net처음에는 점끼리 x가 같으면 빼줘서 y의 길이를 구해주고 해서 길이로 해주는 건가? 싶다가도 뭔가 표현을 어떻게 해주어야 할 지 떠오르지 않아서 패스,, 그 다음엔 x와 y가 둘다 같지 않은 점끼리 대각선이니까 길이를 구해줘서 해주는 건가? 하다가 뭐 이 방법으로도 가능할 것 같긴 한데,, 바로 count함수로 중복되지 않은 값, 즉 하나만 있는 수를 좌표로 찍어주면 되는 것이였다. set()을 이용해서 중복된 값을 없애주기도 하던데,, 이거로 풀어볼 수도 있으려나..? 지금은 마땅히 떠오르지는 ..