ROOT

📌 문제 두 수 a와 b가 주어졌을 때, a와 b의 최소 공배수를 구하는 프로그램을 작성하시오 📌 입력 첫째 줄에 테스트 케이스의 개수 n이 주어진다. 다음 n개 줄에는 a와 b가 주어진다. a와 b사이에는 공백이 하나 이상 있다. 두 수는 백만보다 작거나 같은 자연수이다 📌 출력 각 테스트 케이스에 대해서 입력으로 주어진 두 수의 최소공배수를 출력한다. 📌 문제 풀이 👨‍🏫 접근 최소공배수는 최대공약수를 통해 구할 수 있다. 최대공약수는 둘을 나눌 수 있는 최대한의 공약수로 이 공약수를 사용해서 두 수의 곱을 나누면 최소공배수를 구할 수 있다. 일반적으로 두 개의 수를 곱하면 서로의 공배수가 만들어지는데, 이를 서로 나눌 수 있는 수중에 가장 크고 두 수의 나머지를 만들지 않는 수가 최대공약수이기 때문..
어느새 백준에서 푼 알고리즘 문제의 개수도 400개가 다 되어간다. 처음에는 그저 호기심으로 시작했던 파이썬이 점점 내 삶의 일부가 되고 현재는 자바스크립트와 리액트, NestJS와 Express를 공부하게 되었다. 진로도 중·고등학교 지리교과 선생님이었지만, 파이썬을 만나 머신러닝 모델 개발자에서 현재는 웹 개발자로의 꿈을 키우고 있다. 물론 도메인 지식도 중요하지만 개발자는 기본적으로 실용적으로 사고하고 최적의 코드를 작성해야 하기 때문에 알고리즘을 통해 컴퓨팅 사고를 형성하는 것은 기본이다. 그래서 알고리즘 공부를 열심히 했다. 처음에는 레이튼 교수 시리즈 게임을 하는 것처럼 수수께끼를 푸는 기분이었지만, 점차 알고 있어야 하는 알고리즘도 늘어나고 쉽게 떠올릴 수 없는 풀이도 생기면서 지칠 때도 있..
📌 문제 M이상 N이하의 소수를 모두 출력하는 프로그램을 작성하시오. 📌 입력 첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다. 📌 출력 한 줄에 하나씩, 증가하는 순서대로 소수를 출력한다. 📌 문제 풀이 👨‍🏫 접근 소수를 2중 for문으로 구하면 O(N2)이 걸리기 때문에 문제의 최댓값인 106을 제곱했을 때 1012이기 때문에 1000초가량 걸린다. 그런데 소수를 구하는 데에 있어서 그 수를 2부터 자기 자신까지 나누는 것이 아니라 자신의 제곱근만큼만 약수를 구하면 된다. 왜냐하면 제곱근 이후로 나누는 수와 몫이 서로 바뀌어 등장하기 때문이다. 예를 들어 16의 약수는 1, 2, 4, 8,..
📌 문제 N개의 정수로 이루어진 수열이 있을 때, 크기가 양수인 부분수열 중에서 그 수열의 원소를 다 더한 값이 S가 되는 경우의 수를 구하는 프로그램을 작성하시오. 📌 입력 첫째 줄에 정수의 개수를 나타내는 N과 정수 S가 주어진다. (1 ≤ N ≤ 20, |S| ≤ 1,000,000) 둘째 줄에 N개의 정수가 빈 칸을 사이에 두고 주어진다. 주어지는 정수의 절댓값은 100,000을 넘지 않는다. 📌 출력 첫째 줄에 합이 S가 되는 부분수열의 개수를 출력한다. 📌 문제 풀이 👨‍🏫 접근 백트래킹 문제. 여러 가지 조합을 고려하여 결과를 출력한다. 수열을 여러 개의 부분으로 나눠서 전체에서 가능한 모든 경우를 탐색하기 때문이다. 👨‍🏫 문제 풀이 📄 전체 코드 n, s = map(int, input()...
턴태
'분류 전체보기' 카테고리의 글 목록 (40 Page)