no image
백준 1629번 : 곱셈
곱셈https://www.acmicpc.net/problem/1629힌트레퍼런스 [1]을 참고했다.지수 법칙 : $a^{n+m} = a^{n} * a^{m}$모듈러 성질 : $(a*b)$%$c$ = $(a$%$c * b$%$c)$%$c$재귀 함수key hint : 분할 정복Code#include using namespace std;int a, b, c;long long int F(long long int y){ if(y==1) return a%c; long long int k = F(y/2)%c; if(y%2==0) return k*k%c; else return k*k%c * a%c;}int main() { scanf("%d %d %d", &a, &b, &c); cou..
2024.05.14
no image
백준 2805번 : 나무 자르기
나무 자르기https://www.acmicpc.net/problem/2805 이 문제의 핵심은 이분탐색이다.Code#include #include using namespace std;int main() { long long num_tree, m; cin >> num_tree >> m; vector trees(num_tree); for(int i = 0; i > trees[i]; sort(trees.begin(), trees.end()); long long min = 0; long long max = trees[num_tree-1]; long long result = 0; while(min mid) { sum += trees[i]..
2024.05.12
no image
백준 2750번 : 수 정렬하기
정렬 알고리즘https://www.acmicpc.net/problem/2750 2750번: 수 정렬하기첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다.www.acmicpc.net 정렬 알고리즘 섹션에서 비교적 쉬운 문제이지만 조금 색다르게 풀어보기 위해 배열을 이용하였다. 어떻게 보면 저번에 학습한 배열파트를 잊지못해 적용해보고자 풀이해봤다. #include using namespace std;int main(){ int N = 1; int n = 0; int a[2000] = {}; //0이상 1000이하의 정수를 담을 배열 int b[2000] =..
2022.02.20
no image
백준 2798번 : 블랙잭
모든 항목을 검사하는 방법 : 브루트 포스주어진 N개의 자연수 중에서 세 개를 뽑는다.경우의 수를 따져서 모든 항목을 검사하여 최댓값 M에 가장 가까운 수를 출력하는 문제이다. 생각의 흐름대로 가다보니 삼중for문을 사용하는 방식으로 가긴 했다만..물론 다른 방법도 있지만 삼중for문이 가장 적당한 풀이법 같았다.원초적인 방법이고 처음 써보려니 막힌다. 내가 작성한 정답코드는 다음과 같다. #include using namespace std;//1. 세 수를 더해서 21 이상은 걸러//2. 거른수중에서 최댓값int main(){ int N, M, q, w, e, sum, goal = 0; int min = 9999999; int a[100] ={0}; cin>>N>>M; ..
2022.02.15
no image
백준 5622번 : 다이얼
ASCII와 논리연산자를 이용한 알고리즘제가 작성한 코드는 다음과 같습니다. #include using namespace std;int main(){ string alp = {""}; //알파벳 배열 alp를 NULL로 초기화한다. int time = 0; cin>>alp; for(int i = 0;alp[i] != 0;i++ ){ // 논리연산자를 이용하여 각 알파벳에 해당하는 범위를 ASCII의 dec값으로 // 지정해준다. if (alp[i] > 0){ if (alp[i] >= 65 && alp[i] = 68 ){ alp[i] = 4; }else if (alp[i] = 71..
2022.02.15
no image
백준 11720번 : 숫자의 합
char형의 특성을 이용한 풀이내가 작성한 코드는 다음과 같다.#include using namespace std;int main(){ char a[100] = {}; //숫자를 char의 문자형 배열로 받는다.(ASCII형태로 저장) int N, result = 0; cin>>N; for(int i =0;i>a[i]; result += (a[i] - 48); //배열의 값에서 '0'의 ASCII 정수값을 빼준다. } coutChar형은 ASCII 방식을 이용한다.  배열값에서 ASCII코드표의 '0'에 해당하는 dec 값을 빼준다. 그렇게 되면, 사용자로부터 받은 문자형태의 숫자는 그에 맞는 정수로 출력된다. 문제의 자세한 정보는 링크를 참조하자. https..
2022.02.15
no image
백준 1546번 : 평균
배열을 이용한 평균내기 내가 작성한 정답코드는 다음과 같다.#include using namespace std;int main(){ int num = 0; int max = 0; double score[1000] = {}; double sum = 0; double result = 0; cin>>num; for(int i = 0;i >score[i]; //점수를 받는다. if (i == 0){ max = score[i]; //첫 번째 숫자는 필연적으로 최댓값이다. } if (i > 0){ if (max 배열을 이용한 단순한 풀이가 가능했다. 다만 주의할점은 소숫점 결과출력에 따른 doubl..
2022.02.15
no image
백준 3052번 : 나머지
배열을 이용한 문제내가 작성한 정답코드는 다음과 같다. #include using namespace std;int main(){ int list[10] = {};//10개의 자연수를 받기위한 배열 int nanum[42] = {};//42로 나눈 나머지를 받기위한 41개의 배열 int count = 0; //서로다른 나머지의 갯수를 받기위한 변수 //10개의 자연수를 받고나서 42로 나눈 나머지에 해당하는 nanum인덱스를 +1한다. for(int i = 0;i >list[i]; list[i] %= 42; nanum[list[i]]++; } //if문을 사용하여 nanum인덱스에서 0이 아닌 인덱스를 카운트 한다. for(int j = ..
2022.02.14
no image
[백준] 숫자의 개수 (2577번)
배열문제 2577번 정답코드는 다음과 같다. #include using namespace std;int main(){ int A = 0; int B = 0; int C = 0; int count[10] = {}; cin>>A>>B>>C; int res = A*B*C; while(res != 0){ count[res % 10]++; res /= 10; } for(int v : count){ cout 배열을 이용하는 간단한 문제다. while문과 for each문을 사용한다.나머지와 나눗셈 연산자를 사용한다.
2022.02.14