Algorithm 53

[Python | 1182] 부분수열의 합

https://www.acmicpc.net/problem/1182문제 설명N개의 정수로 이루어진 수열이 있을 때, 크기가 양수인 부분수열 중에서 그 수열의 원소를 다 더한 값이 S가 되는 경우의 수를 구하는 프로그램을 작성하시오. 📌 시간 제한: 2초입력첫째 줄에 정수의 개수를 나타내는 N과 정수 S가 주어진다. (1 ≤ N ≤ 20, |S| ≤ 1,000,000) 둘째 줄에 N개의 정수가 빈 칸을 사이에 두고 주어진다. 주어지는 정수의 절댓값은 100,000을 넘지 않는다.출력첫째 줄에 합이 S가 되는 부분수열의 개수를 출력한다.문제 접근이 문제는 크기가 N인 수열에서, 합이 S가 되는 부분수열의 개수를 찾는 문제다. 처음 문제를 봤을 때, 부분수열을 직접 생성해서 합을 비교하는 방식이 떠올랐다. 하..

Algorithm/Baekjoon 2025.03.07

[Python | 4948] 베르트랑 공준

https://www.acmicpc.net/problem/4948문제 설명베르트랑 공준은 임의의 자연수 n에 대하여, n보다 크고, 2n보다 작거나 같은 소수는 적어도 하나 존재한다는 내용을 담고 있다.이 명제는 조제프 베르트랑이 1845년에 추측했고, 파프누티 체비쇼프가 1850년에 증명했다.예를 들어, 10보다 크고, 20보다 작거나 같은 소수는 4개가 있다. (11, 13, 17, 19) 또, 14보다 크고, 28보다 작거나 같은 소수는 3개가 있다. (17,19, 23)자연수 n이 주어졌을 때, n보다 크고, 2n보다 작거나 같은 소수의 개수를 구하는 프로그램을 작성하시오.  📌 시간 제한: 1초입력입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 케이스는 n을 포함하는 한 줄로 이루어져 있..

Algorithm/Baekjoon 2025.03.05

[Algorithm] 에라토스테네스의 체(Sieve of Eratosthenes)란?

에라토스테네스의 체소수(prime number)란?1과 자기 자신을 제외한 다른 어떤 수로도 나누어지지 않는 자연수이다. 예를 들어, 2, 3, 5, 7, 11 등은 소수이다. 일반적으로 소수를 판별하는 방법 중 하나는 특정 수가 소수인지 하나씩 확인하는 O(√N) 방식이다. 예를 들어, 어떤 수 xxx가 소수인지 판별하려면 1부터 xxx까지 모든 수를 나누어보는 대신, √x까지만 확인하면 충분하므로 O(√N)의 시간 복잡도를 갖는다.하지만 N까지의 모든 소수를 찾을 때 이 방식을 그대로 적용하면, 각 숫자마다 O(√N) 연산을 수행해야 하므로 전체적으로 O(N√N)의 시간 복잡도가 발생한다.이 때문에 여러 개의 소수를 한 번에 찾기에는 비효율적이며, 보다 빠르게 소수를 구하기 위해 에라토스테네스의 체 ..

Algorithm/Deep Dive 2025.03.05

[Python | 2609] 최대공약수와 최소공배수

https://www.acmicpc.net/problem/2609문제 설명두 개의 자연수를 입력받아 최대 공약수와 최소 공배수를 출력하는 프로그램을 작성하시오.📌 시간 제한: 1초입력첫째 줄에는 두 개의 자연수가 주어진다. 이 둘은 10,000이하의 자연수이며 사이에 한 칸의 공백이 주어진다.출력첫째 줄에는 입력으로 주어진 두 수의 최대공약수를, 둘째 줄에는 입력으로 주어진 두 수의 최소 공배수를 출력한다.문제 접근처음에는 최대공약수(GCD)와 최소공배수(LCM)를 구하는 방법을 몰라서, 그냥 직관적으로 "공약수를 직접 찾으면 되지 않을까?"라고 생각하고 접근했다. 이 과정에서 1부터 작은 수까지 나누어보며 공약수를 찾는 방법을 사용했고, 최소공배수는 GCD를 활용하는 공식을 찾아 적용했다. 단순 구현..

Algorithm/Baekjoon 2025.03.04

[Python | 15650] N과 M (2)

https://www.acmicpc.net/problem/15650문제 설명자연수 N과 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오.1부터 N까지 자연수 중에서 중복 없이 M개를 고른 수열고른 수열은 오름차순이어야 한다.📌 시간 제한: 1초입력첫째 줄에 자연수 N과 M이 주어진다. (1 ≤ M ≤ N ≤ 8)출력한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다.수열은 사전 순으로 증가하는 순서로 출력해야 한다.문제 접근이 문제를 처음 보면 중복 없이 M개를 선택해야 한다는 점에서 "N과 M (1)"과 비슷해 보일 수 있다. 하지만, 이번 문제에서는 순서가 중요하..

Algorithm/Baekjoon 2025.03.04

[Python | 15649] N과 M (1)

https://www.acmicpc.net/problem/15649문제 설명자연수 N과 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오.1부터 N까지 자연수 중에서 중복 없이 M개를 고른 수열📌 시간 제한: 1초입력첫째 줄에 자연수 N과 M이 주어진다. (1 ≤ M ≤ N ≤ 8)출력한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다.수열은 사전 순으로 증가하는 순서로 출력해야 한다.문제 접근완전 탐색이 가능한지?이 문제는 1부터 N까지의 숫자 중 중복 없이 M개를 선택하는 경우를 모두 찾아야 한다. 하지만 단순한 반복문으로는 해결하기 어렵다. 그 이유는 N과 M의 ..

Algorithm/Baekjoon 2025.03.03

[Python | Level1] 삼총사

https://school.programmers.co.kr/learn/courses/30/lessons/131705 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr문제 설명한국중학교에 다니는 학생들은 각자 정수 번호를 갖고 있습니다. 이 학교 학생 3명의 정수 번호를 더했을 때 0이 되면 3명의 학생은 삼총사라고 합니다. 예를 들어, 5명의 학생이 있고, 각각의 정수 번호가 순서대로 -2, 3, 0, 2, -5일 때, 첫 번째, 세 번째, 네 번째 학생의 정수 번호를 더하면 0이므로 세 학생은 삼총사입니다. 또한, 두 번째, 네 번째, 다섯 번째 학생의 정수 ..

[Python | Level1] 최댓값과 최솟값

https://school.programmers.co.kr/learn/courses/30/lessons/12939# 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr문제 설명문자열 s에는 공백으로 구분된 숫자들이 저장되어 있습니다. str에 나타나는 숫자 중 최소값과 최대갑승ㄹ 찾아 이를 "(최소값) (최대값)" 형태의 문자열을 반환하는 함수, solution을 완성하세요.예를 들어 s가 "1 2 3 4"라면 "1 4"를 리턴하고, "-1 -2 -3 -4"라면 "-4 -1"을 리턴하면 됩니다.제한 조건s에는 둘 이상의 정수가 공백으로 구분되어 있습니다.문제 풀이..

[Python | Level1] 문자열 다루기 기본

https://school.programmers.co.kr/learn/courses/30/lessons/12918 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr문제 설명문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼 있는지 확인해 주는 함수, solution을 완성하세요. 예를 들어 s가 "a234"이면 False를 리턴하고 "1234"라면 True를 리턴하면 됩니다.제한 사항s는 길이 1 이상, 길이 8 이하인 문자열입니다.s는 영문 알파벳 대소문자 또는 0부터 9까지 숫자로 이루어져 있습니다.문제 풀이def solution(s): return ..

[Python | Level1] 음양 더하기

https://school.programmers.co.kr/learn/courses/30/lessons/76501 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 어떤 정수들이 있습니다. 이 정수드르이 절댓값을 차례대로 담은 정수 배열 absolutes와 이 정수들의 부호를 차례대로 담은 불리언 배열 signs가 매개변수로 주어집니다. 실제 정수들의 합을 구하여 return 하도록 solution 함수를 완성해 주세요. 제한 사항 absolutes의 길이는 1 이상 1,000 이하입니다. absolutes의 모든 수는 각각 1 이상 1,000 이..