알고리즘/백준(BOJ)

간단하게 재귀함수를 사용하면 쉽게 풀리는 문제 #include using namespace std; int people(int k, int n){ if(k == 0){ return n; } else{ int sum = 0; for(int i = 1; i > t; for(int i = 0; i > k >> n; int sum; sum = people(k, n); cout
STL에서 제공하는 를 사용하면 간단하게 문자열 비교를 통하여서 문제를 풀 수 있다. 이 문제를 풀면서 한 가지 유의했던 점은 시간인데, 기존에 시간을 절약하기 위해서 ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 를 사용하였는데 이 문제는 이 것으로는 충분하지 않았다. 놓치고 있었던 부분 중 하나는 출력해줄 때 줄바꿈 연산자인 endl 를 사용하면 속도가 느려진다는 점이다. 또 하나는 if 문을 연달아 사용하는 것이었는데, 안좋은 습관 중 하나가 if~ else if 문을 사용하지 않고 if 문만 사용했다는 점이다. 이 부분도 실수하지 말아야할 부분 중 하나다. #include #include using namespace std; int ma..
이 문제는 C/C++ 에서 큰 정수를 다루는데 어떻게 다룰 수 있는지 배울 수 있는 문제이다. C/C++에서 담을 수 있는 정수형 자료형으로는 택도 없이 부족한 큰 두 수가 주어진다. 그럴 때 정수를 문자열로 입력 받아서 문자형으로 해결할 수 있다. 나의 접근법은 문자열을 끝에서부터 한 자리씩 int 형으로 변환하여 더해주어 10이 넘어가면 올려주고, 안 넘어가면 그대로 두는 방식을 택했다. 이 때 문자열의 한 글자를 떼어보면 char형으로 분류되고 이를 int 형으로 변환하려 하면 해당 문자의 ASCII 코드의 정수값으로 변환되어 계산이 된다. 이 때문에 char를 int형으로 변환하기전에 '0' 으로 빼주면 ASCII 코드 표에서 상대적인 한 자리 정수값을 구할 수 있다. 이렇게 한 자리씩 계산한 다..
이 문제는 패턴을 찾고 순서에 알맞는 패턴의 값을 출력하면 된다. 분수는 일정한 패턴으로 분자와 분모가 변한다. 우선 분자와 분모의 최대값이 자연수로 정해진다. 1번째 분수는 1이 최대값 2~3번째 분수는 2가 최대값 4~6번째 분수는 3이 최대값 7~10번째 분수는 4가 최대값 11~15번째 분수는 5가 최대값 ... 최대값이 짝수이고 i로 표현할 때 분수는 1/i, 2/(i - 1), ... , i/1 순서로 배정되고 최대값이 홀수일때는 분수는 i/1, (i - 1)/2, ... , 1/i 순서로 배정된다. 구하고자 하는 정수가 입력되면 반복문을 돌며 최대값이 몇 인 범위의 몇 번째 수인지를 구해서 분자와 분모를 구분하여 출력해주면 된다. #include using namespace std; int ..
오뚜깅
'알고리즘/백준(BOJ)' 카테고리의 글 목록 (5 Page)