Programming/Algorithm 237

[백준] #23971 ZOAC 4 python

https://www.acmicpc.net/problem/5073 5073번: 삼각형과 세 변 각 입력에 맞는 결과 (Equilateral, Isosceles, Scalene, Invalid) 를 출력하시오. www.acmicpc.net 📕 나의 풀이 📕 행, 열 별로 앉을 수 있는 자리 개수를 구해 곱한다. 앉을 수 있는 자리 개수는 {길이 / ( 비우고 앉아야 하는 자리 개수 + 1)}을 반올림 한 값이다. 🧑🏻‍💻 나의 코드 🧑🏻‍💻 import math H, W, N, M = map(int, input().split()) row = math.ceil(H / (N + 1)) col = math.ceil(W / (M + 1)) print(row * col)

[백준] #1747 소수&팰린드롬 python

https://www.acmicpc.net/problem/1747 1747번: 소수&팰린드롬 어떤 수와 그 수의 숫자 순서를 뒤집은 수가 일치하는 수를 팰린드롬이라 부른다. 예를 들어 79,197과 324,423 등이 팰린드롬 수이다. 어떤 수 N (1 ≤ N ≤ 1,000,000)이 주어졌을 때, N보다 크거나 같고, www.acmicpc.net 📕 설명 📕 소수와 팰린드롬을 구분하는 function을 각각 만들고 반복문을 통해 확인한다. 🧑🏻‍💻 나의 풀이 🧑🏻‍💻 import math def isPrime(x): if x == 1: return False for i in range(2, int(math.sqrt(x)+1)): if x % i == 0: return False return True d..

[백준] #1074 Z python

https://www.acmicpc.net/problem/1074 1074번: Z 한수는 크기가 2N × 2N인 2차원 배열을 Z모양으로 탐색하려고 한다. 예를 들어, 2×2배열을 왼쪽 위칸, 오른쪽 위칸, 왼쪽 아래칸, 오른쪽 아래칸 순서대로 방문하면 Z모양이다. N > 1인 경우, 배열을 www.acmicpc.net 📕 설명 📕 사분면을 추적하며 풀이했다. 생각보다 어려웠다. 🧑🏻‍💻 나의 풀이 🧑🏻‍💻 N, R, C = map(int, input().split()) cnt = 0 while N > 1: size = (2 ** N) // 2 if R C: cnt += size ** 2 * 2 R -= size el..

[백준] #2290 LCD Test

https://www.acmicpc.net/problem/2290 2290번: LCD Test 첫째 줄에 두 개의 정수 s와 n이 들어온다. (1 ≤ s ≤ 10, 0 ≤ n ≤ 9,999,999,999)이다. n은 LCD 모니터에 나타내야 할 수 이며, s는 크기이다. www.acmicpc.net 📕 설명 📕 7 segments 문제라고한다. 어려웠다. 🧑🏻‍💻 나의 풀이 🧑🏻‍💻 S, N = map(int, input().split()) N = str(N) M = 2 * S + 3 ans = [[" "] * ((S + 2) * (len(N)) + (len(N) - 1)) for _ in range(M)] st = 0 for i in N: if i == '1': st += S + 1 for j in r..

[백준] #2502 떡 먹는 호랑이 python

https://www.acmicpc.net/problem/2502 2502번: 떡 먹는 호랑이 첫줄에 첫 날에 준 떡의 개수 A를 출력하고 그 다음 둘째 줄에는 둘째 날에 준 떡의 개수 B를 출력한다. 이 문제에서 주어진 D, K에 대해서는 항상 정수 A, B (1≤ A ≤ B)가 존재한다. www.acmicpc.net 📕 설명 📕 피보나치 변형문제. 쉽지만은 않았다. 🧑🏻‍💻 나의 풀이 🧑🏻‍💻 import sys d, k = map(int, input().split()) a, b = 1, 1 for _ in range(4, d + 1): a, b = b, a + b a_c = 1 b_c = 0 while True: tmp = k - a * a_c if tmp < 0: break if tmp % b =..

[백준] #1932 정수 삼각형 python

https://www.acmicpc.net/problem/1932 1932번: 정수 삼각형 첫째 줄에 삼각형의 크기 n(1 ≤ n ≤ 500)이 주어지고, 둘째 줄부터 n+1번째 줄까지 정수 삼각형이 주어진다. www.acmicpc.net 📕 설명 📕 DP 문항. 어렵다. 하나씩 값을 기억하며 간다. 🧑🏻‍💻 나의 풀이 🧑🏻‍💻 N = int(input()) li = [] dp = [[0] * N for _ in range(N)] for i in range(N): li.append(list(map(int, input().split()))) dp[0][0] = li[0][0] for i in range(1, N): for j in range(0, i+1): if j == 0: dp[i][j] = dp[i..

[백준] #1080 행렬 python

https://www.acmicpc.net/problem/1080 1080번: 행렬 첫째 줄에 행렬의 크기 N M이 주어진다. N과 M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 행렬 A가 주어지고, 그 다음줄부터 N개의 줄에는 행렬 B가 주어진다. www.acmicpc.net 📕 설명 📕 간단한 행렬문제 풀이. 바꿔가주며 개수만 세면 쉽다. 🧑🏻‍💻 나의 풀이 🧑🏻‍💻 N, M = map(int, input().split()) A = [list(map(int, list(input()))) for _ in range(N)] B = [list(map(int, list(input()))) for _ in range(N)] cnt = 0 def convert(i, j, A): for ite..

[백준] #1629 곱셈 python

https://www.acmicpc.net/problem/1629 1629번: 곱셈 첫째 줄에 A, B, C가 빈 칸을 사이에 두고 순서대로 주어진다. A, B, C는 모두 2,147,483,647 이하의 자연수이다. www.acmicpc.net 📕 설명 📕 Divide and Conquer. 그냥 풀었다가 큰 코 다친 문제. 시간초과가 계속 떴다. 그래서 풀이 방법을 바꿔보았다. 분할 정복으로 풀이했다. 🧑🏻‍💻 나의 풀이 🧑🏻‍💻 def Divide_and_Conquer(a, b): if b == 1: return a % C else: temp = Divide_and_Conquer(a, b // 2) if b % 2 == 0: return temp * temp % C else: return temp ..