2436번: 공약수 첫째 줄에 두 개의 자연수가 빈칸을 사이에 두고 주어진다. 첫 번째 수는 어떤 두 개의 자연수의 최대공약수이고, 두 번째 수는 그 자연수들의 최소공배수이다. 입력되는 두 자연수는 2 이상 100,0 www.acmicpc.net 해당 문제는 최대공약수와 최소공배수가 주어지면, 주어진 최대공약수와 최소공배수를 만족시키는 두 수 A, B 중 A + B가 가장 작은 경우를 찾는 문제입니다. 접근 전략 A X B 는 최대공약수 X 최소공배수 와 같습니다. 완전탐색으로 가능한 모든 경우의 수를 찾는다. 최대공약수의 배수들을 탐색한다. 최대공약수의 배수들 중 A X B 와 나누어 떨어지는 경우를 찾는다. 주어진 최대공약수와 탐색하는 수의 최대공약수가 같은 경우를 찾는다. (유클리드 호제법으로 최대..
19532번: 수학은 비대면강의입니다 정수 $a$, $b$, $c$, $d$, $e$, $f$가 공백으로 구분되어 차례대로 주어진다. ($-999 \leq a,b,c,d,e,f \leq 999$) 문제에서 언급한 방정식을 만족하는 $\left(x,y\right)$가 유일하게 존재하고, 이 때 $x$와 $y$가 각각 $- www.acmicpc.net 해당 문제는 이원연립방정식의 해를 구하는 문제입니다. 해당 문제도 완전탐색 알고리즘을 활용하면 손쉽게 풀 수 있습니다. 물론, 직접 방정식을 푸는 식을 사용한다면 더욱 최적화를 할 수 있습니다. 두 가지 방법 모두 사용해 보겠습니다. # Python : 일반적인 완전탐색을 활용한 방법입니다 def solution(a: int, b: int, c: int, d:..
14568번: 2017 연세대학교 프로그래밍 경시대회 규칙에 맞게 사탕을 분배하는 경우의 수를 출력한다. 택희, 영훈이, 남규가 받은 사탕의 수를 각각 A, B, C개라고 할 때, 서로 다른 (A, B, C) 순서쌍의 수를 세면 된다. 만일 규칙에 맞게 사탕을 분 www.acmicpc.net 해당 문제는 규칙에 맞게 사탕을 나눌 수 있는 경우의 수를 계산하는 문제입니다. 문제 조건을 보면 시간과 메모리가 충분하므로 완전탐색으로 구현하면 손쉽게 풀 수 있습니다. # Python N = int(input()) count = 0 for A in range(2, N - 1, 2): for B in range(1, N - A): C = N - A - B if C - B >= 2: count += 1 print(c..
1816번: 암호 키 현대 사회에서 통용되고 있는 많은 종류의 암호 시스템에서는, 매우 큰 소수의 곱으로 만들어진 수를 암호 키로 이용하는 경우가 많다. 현실적으로 매우 큰 수를 빠른 시간 내에 소인수분해하는 www.acmicpc.net 백준 - 1816번 문제입니다. 해당 문제는 숫자가 주어지고 해당 숫자가 1,000,000 보다 큰 소인수로 이루어져 있다면 "YES"를 출력하고 아니면 "NO"를 출력하는 문제입니다. 다양한 방법으로 최적화가 가능하지만, 해당 문제의도에 맞게 가능한 모든 경우의 수를 넣는 방식인 완전탐색으로 풀어보겠습니다. 시간과 메모리가 충분하다면, 그 어떤 문제도 해결할 수 있는 아주 강력한 방법입니다. # Python for _ in range(int(input())): num ..
스프링 부트를 이용하여 2가지 프로젝트를 진행해보고 나서 문득 스프링에 대한 기초가 궁금해서 수강한 강의이다. 비전공자이다 보니 기초가 아무래도 부족하지 않나 싶은 생각도 들었고, 사실 워낙 유명한 분의 강의이다 보니 궁금한 게 컸다. 대부분 부트캠프에서 배웠던 내용들이라 새롭게 배웠다기보다는 복습을 한 기분이다. 그때 당시에는 IoC, DI 등 이러한 용어적인 부분들이 배우면서도 와닿지 않았었다. 프로젝트를 진행하면서, 이런 저런 기능도 추가하고 구현하면서 어렴풋이 알게 되었던 것 같다. 좋았던 점은 과거의 스프링이 없던 시절부터 점점 현대로 발전해 오는 과정에서 왜 이러한 기능들이 생겨났는지와, 왜 이러한 기능들이 필요한지에 대한 이유들에 대한 설명이다. 그러한 과정을 코드로 보여준다. 예를 들어, ..
Spring 관련해서 요즘 기초부터 다시 보고 있는데 생성자 주입에 관해서 보고 있던 중, 흥미로운 부분을 발견했다. 수정자 주입과 필드 주입이다. (옛날에는 수정자 주입, 필드 주입을 많이 사용했었다고 한다) 수정자 주입 선택, 변경의 가능성이 있는 의존관계에 사용한다 자바빈 프로퍼티 규약의 수정자 메서드 방식을 사용하는 방법이다 set메서드를 public으로 열어둬야 한다 (누군가 변경가능성 있음) @Component public class OrderServiceImpl implements OrderService { private MemberRepository memberRepository; private DiscountPolicy discountPolicy; @Autowired public void..