본문 바로가기

실버35

4779번: 칸토어 집합 - 문제 사이트: https://www.acmicpc.net/problem/4779 4779번: 칸토어 집합 칸토어 집합은 0과 1사이의 실수로 이루어진 집합으로, 구간 [0, 1]에서 시작해서 각 구간을 3등분하여 가운데 구간을 반복적으로 제외하는 방식으로 만든다. 전체 집합이 유한이라고 가정하고, www.acmicpc.net 주어진 문자열을 삼등분하여 두번째 섹션에 공백을 주고, 이를 공백의 길이가 1이 될 때까지 반복해주는 문제이다. 이 때, 입력 조건 (while문 유지 조건)은 N을 입력 받는 동안 (cin >> N)으로 설정해주도록 한다. 1) 횟수 입력 받음: N 2) 전체 문자열의 길이 확인: 3^N 3) 전체 문자열을 세 구간으로 나눈 후 가운데 구간을 빈 값 (' ')으로 대체 4) 첫.. 2023. 9. 12.
2559번: 수열 - 문제 사이트: https://www.acmicpc.net/problem/2559 2559번: 수열 첫째 줄에는 두 개의 정수 N과 K가 한 개의 공백을 사이에 두고 순서대로 주어진다. 첫 번째 정수 N은 온도를 측정한 전체 날짜의 수이다. N은 2 이상 100,000 이하이다. 두 번째 정수 K는 합을 구하기 www.acmicpc.net "11659번: 구간 합 구하기 4"의 확장된 문제이다. 이전 문제가 i 부터 j까지 구간합의 값을 구하는 문제였다면, 이번에는 구간 너비가 주어진 문제이다. 0번부터 i번까지의 누적값을 구한 배열을 이용하여 풀어주도록 한다. 1) max 값은 나올 수 있는 가장 작은 값으로 설정: max = (가장 작은 수) * (구간 너비) = -100 * K 2) 구간합을 구하.. 2023. 9. 6.
12789번: 도키도키 간식드리미 - 문제 사이트: https://www.acmicpc.net/problem/12789 12789번: 도키도키 간식드리미 인하대학교 학생회에서는 중간, 기말고사 때마다 시험 공부에 지친 학우들을 위해 간식을 나눠주는 간식 드리미 행사를 실시한다. 승환이는 시험 기간이 될 때마다 간식을 받을 생각에 두근두 www.acmicpc.net 줄 서 있는 학생들은 queue 형태로 이동하고, 임시 공간에 서는 학생은 stack 형태로 이동한다. 이에 맞게 아래의 로직을 구현해주면 된다. 1) 비교할 수 있도록 현재 순서를 저장 (order) 2) 임시 공간 (stack) 가장 위의 학생이 현재 순서와 일치하는지 확인 3-1) 줄 서 있는 (queue) 가장 앞의 학생이 현재 순서와 일치한다면, 다음 학생 확인: or.. 2023. 9. 3.
11659번: 구간 합 구하기 4 - 문제 사이트: https://www.acmicpc.net/problem/11659 11659번: 구간 합 구하기 4 첫째 줄에 수의 개수 N과 합을 구해야 하는 횟수 M이 주어진다. 둘째 줄에는 N개의 수가 주어진다. 수는 1,000보다 작거나 같은 자연수이다. 셋째 줄부터 M개의 줄에는 합을 구해야 하는 구간 i와 j www.acmicpc.net 정석적으로 풀면 문제 그대로 시작 번호부터 끝 번호까지 더해서 출력해주면 된다. 하지만, 이 경우 시작과 끝의 간격이 클 수록 계산하는데 시간이 오래 걸린다. 따라서, 로직 상으로는 맞지만 시간 초과 결과를 받게 된다. #include using namespace std; int main() { ios_base::sync_with_stdio(false); .. 2023. 9. 1.
1735번: 분수 합 - 관련 사이트: https://www.acmicpc.net/problem/1735 1735번: 분수 합 첫째 줄과 둘째 줄에, 각 분수의 분자와 분모를 뜻하는 두 개의 자연수가 순서대로 주어진다. 입력되는 네 자연수는 모두 30,000 이하이다. www.acmicpc.net 2개의 분수가 주어졌을 때, 두 분수의 합을 기약분수로 나타내는 문제이다. 1) 입력받은 두 분수의 합 계산 입력받은 분수: a/b, c/d 분자 = a * d + c * b 분모 = b * d 2) 계산된 분자, 분모의 최대공약수 계산: 유클리드 호제법 이용 3) 계산된 분자, 분모를 각각 최대공약수로 나눔 == 기약분수 #include using namespace std; int gcd(int a, int b) { return .. 2023. 6. 20.