본문 바로가기

알고리즘/백준

백준 16195] 1,2,3 더하기 9 문제 출처)www.acmicpc.net/problem/16195 먼저 1,2,3 1개로 만드는 경우의 수는 1가지 씩이다. 이때 2를 2개로 만드는 경우의 수는 1을 1개로 만드는 경우에 1을 더하는 경우이므로 (1,1) 의 위치의 값을 가져 올 수 있다. 3을 2개로 만드는 경우의 수는 2를 1개로 만드는 경우에 1을 더하는 경우와 1을 1개로 만드는 경우에 2를 더하는 경우이므로 (2,1) + (1,1) = 2 의 값으로 만들 수 있다. 4를 2개로 만드는 경우의 수는 3을 1개로 반드는 경우에 1을 더하는 경우와 2를 1개로 만드는 경우에 2를 더하는 경우와 1을 1개로 만드는 경우에 3을 더하는 경우의 수 (3,1)+(2,1)+(1,1) = 3 으로 만들 수 있다. 따라서 n개의 값을 m개를 이용.. 더보기
백준1977-완전제곱수(브론즈1) 문제출처 : https://www.acmicpc.net/problem/1977 1977번: 완전제곱수 M과 N이 주어질 때 M이상 N이하의 자연수 중 완전제곱수인 것을 모두 골라 그 합을 구하고 그 중 최솟값을 찾는 프로그램을 작성하시오. 예를 들어 M=60, N=100인 경우 60이상 100이하의 자연수 중 완� www.acmicpc.net 문제풀이) m의 제곱근을 구해서 올림한 수 n의 제곱근을 구해서 내림한 수 까지의 제곱의 합을 구하면 된다. #include #include #include using namespace std; int main() { int m,n; cin >> m >> n; int s = ceil(sqrt(m)); int e = floor(sqrt(n)); int sum = 0;.. 더보기
백준1925-삼각형(브론즈1) 문제출처 : https://www.acmicpc.net/problem/1925 1925번: 삼각형 평면상에 세 개의 점이 주어지면, 그 세 점으로 이루어지는 삼각형은 유일하게 결정된다. (또는, 삼각형이 이루어지지 않기도 한다.) 세 점의 좌표가 주어졌을 때 다음에 따라 이 삼각형의 종류 www.acmicpc.net 문제풀이) 1. 같은 선에 있는지 없는지는 세 점의 기울기를 체크해서 처리 2. 직각/예각/둔각 은 두 벡터의 내적이 0 이면 직각 음수이면 둔각 양수이면 예각을 이용해 처리 (https://mrw0119.tistory.com/12) 참고 #include #include #include #define PI 3.1415926535 using namespace std; struct point{ .. 더보기
백준1924-2007년(브론즈1) 문제출처 : https://www.acmicpc.net/problem/1924 1924번: 2007년 첫째 줄에 빈 칸을 사이에 두고 x(1≤x≤12)와 y(1≤y≤31)이 주어진다. 참고로 2007년에는 1, 3, 5, 7, 8, 10, 12월은 31일까지, 4, 6, 9, 11월은 30일까지, 2월은 28일까지 있다. www.acmicpc.net 문제풀이) 날짜 까지의 모든 일자를 구한 후 7로 나누어서 나머지를 가지고 확인한다. #include #include using namespace std; int main() { int month[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; int m,d,sum=0,week; cin >> m >> d; for(int i=0.. 더보기
백준1855-암호(브론즈1) 문제출처 : https://www.acmicpc.net/problem/1855 1855번: 암호 준표와 세준이는 서로 솔루션을 토론 하면서 다른 사람이 자신들의 솔루션을 듣지 못하게 하도록 서로 메시지를 주고받을 때 메시지를 암호화 하여서 주고받았다. 암호를 만드는 방법은 다음과 www.acmicpc.net 문제 풀이) 입력 들어온 데이터를 열의 갯수에 맞춰서 배열에 저장 후 배열을 행의 단위로 읽어서 출력해 주면 된다. #include #include using namespace std; int main() { char dec[300]; char enc[100][30]={0}; int y=0,x=0; int col; cin >> col >> dec; int len = strlen(dec); int di.. 더보기
백준1834-나머지와 몫이 같은 수(브론즈1) 문제출처 : https://www.acmicpc.net/problem/1834 1834번: 나머지와 몫이 같은 수 N으로 나누었을 때 나머지와 몫이 같은 모든 자연수의 합을 구하는 프로그램을 작성하시오. 예를 들어 N=3일 때, 나머지와 몫이 모두 같은 자연수는 4와 8 두 개가 있으므로, 그 합은 12이다. www.acmicpc.net 문제풀이) n 이 있으면 나머지는 1부터 n-1 까지 이다. 몫과 나머지가 같은 경우는 i*n + i 인 경우이다. #include using namespace std; int main() { int n; cin >> n; long long sum=0; for(long long i=1;i 더보기
1802-종이접기(브론즈1) 문제 출처 : https://www.acmicpc.net/problem/1802 1802번: 종이 접기 첫째 줄에 테스트 케이스의 개수 T가 주어진다. T는 1000보다 작거나 같은 자연수이다. 둘째 줄부터 T개의 줄에 각각의 종이가 어떻게 접혀있는지가 주어진다. 종이의 정보는 문자열로 주어지며, 1 www.acmicpc.net 문제풀이) 이 문제를 살펴 보면 정 가운데를 접고 있기 때문에 가운데를 기준으로 양쪽은 반드시 거꾸로 된 모습이다. 가령 가운데 0 이고 오른쪽이 01 이 되었다면 왼쪽은 01 과 같이 01001 과 같이 되어야 한다. 즉 01010 과 같이 왼쪽과 오른쪽의 위치(0번째 위치와 4번째 위치가 동일하고 1번째 위치와 3번째 위치가 동일한 결과가 나올 수가 없다.) 가 같으면 만들 .. 더보기
백준1740번-거듭제곱(브론즈1) 문제출처 : https://www.acmicpc.net/problem/1740 1740번: 거듭제곱 3의 제곱수를 생각하자. 3의 0제곱, 3의 1제곱, 3의 2제곱, ... 은 순서대로 1, 3, 9, 27, ... 이 된다. 이를 바탕으로, 한 개 이상의 서로 다른 3의 제곱수의 합으로 표현되는 수를 생각할 수 있다. 예를 �� www.acmicpc.net 문제풀이) 3의 제곱수의 합으로 이루어져 있는 경우를 생각해 봅니다. 3의 제곱수 1,3,9,27 이렇게 있는 경우를 생각해 보면 다음과 같이 생각해 볼 수가 있습니다. 27 9 3 1 숫자 0 0 0 1 1 0 0 1 0 3 0 0 1 1 4 0 1 0 0 9 0 1 0 1 10 0 1 1 0 12 0 1 1 1 13 1 0 0 0 27 1 0 .. 더보기