- *[백준/파이썬] 19532번 수학은 비대면강의입니다. 1. 크래머 공식(Cramer's rule)을 이용해 풀기ax + by = cdx + ey = f x = (ce - bf) / (ae - bd)y = (af - dc) / (ae - bd) 2. 브루트 포스로 풀기# 수학은 비대면강의입니다.a, b, c, d, e, f = map(int, input().split())for x in range(-999, 1000): for y in range(-999, 1000): if a*x + b*y == c and d*x + e*y == f: print(x, y) break 2025.05.17
- 브루트 포스 (Brute Force) 가능한 모든 경우의 수를 전부 탐색하여 해답을 찾는 방식 직역하자면 "무식한 힘", "완전 탐색" 정도의 의미로 해석될 수 있으며,그 이름처럼 효율성보다는 명확하고 직관적인 해결 방법을 강조한다. 핵심 아이디어:문제에서 제시된 조건을 만족하는 모든 경우를 하나하나 시도해 본다.각각의 시도가 해답인지 확인하고, 해답을 찾으면 종료한다.만약 모든 경우를 탐색했는데도 해답을 찾지 못하면, 해답이 없는 것으로 결론 내린다.장점:직관적이고 이해하기 쉽다. 알고리즘 설계가 비교적 간단하다.해답이 반드시 존재한다면 100% 찾을 수 있다. (완전 탐색이기 때문에 누락되는 경우가 없다.)복잡한 알고리즘이나 수학적 지식이 없어도 적용 가능하다.단점:효율성이 매우 낮다. 가능한 경우의 수가 많아질수록 수행 시간이 기하급수.. 2025.05.17
- *[백준/파이썬] 2231번 분해합 | 자릿수 더하기 모든 자리의 자릿수를 더하는 파이썬 문법이 있었다.sum((map(int, str(i)))) 만약 수가 216이라면 int는 216자체를 반환하므로 str(i)를 통해 한 자리씩 int로 가져온다.(2, 1, 6)을 가져온 후 sum함수로 이를 다 더해 모든 자릿수의 합을 구한다. # 분해합n = int(input())m = [] # 생성자for i in range(1, n): tmp = i + sum((map(int, str(i)))) if tmp == n: m.append(i)if len(m) == 0: print(0)else: print(min(m)) 2025.05.17
- *[백준/파이썬] 2798번 블랙잭 [잘못된 반복문 코드]for i in range(n): # n개중에 숫자 하나 고르기 for j in range(n-1): # 첫 반복문 때 고른 거 빼고 나머지 n-1개 중 하나 for x in range(n-2): # 남은 n-2개 중 마지막 세번째 숫자 고르기주석대로 하려면 for i in range(n): # n개중에 숫자 하나 고르기 for j in range(i+1, n): # 첫 반복문 때 고른 거 빼고 나머지 n-1개 중 하나 for x in range(j+1, n): # 남은 n-2개 중 마지막 세번째 숫자 고르기 이렇게 해야 한다. [최종 코드]# 블랙잭n, m = map(int,input().split())cards = list(map(int, in.. 2025.05.17
- [백준/파이썬] 24264번 알고리즘 수업 - 알고리즘의 수행 시간 3 # for문 안에 for문이 있는 중첩for문(중첩반복)이 있으므로 # 시간복잡도는 O(n**2) - n의 2제곱# n의 2제곱이므로 최고차항의 차수는 2가 된다.# 알고리즘 수업 - 알고리즘의 수행 시간 3n = int(input())# for문 안에 for문이 있는 중첩for문(중첩반복)이 있으므로# 시간복잡도는 O(n**2) - n의 2제곱print(n**2)# n의 2제곱이므로 최고차항의 차수는 2가 된다.print(2) 2025.05.16