백준 algorithm
-
백준 2004 - 조합 0의 개수백준 algorithm 2020. 3. 14. 12:31
=> 어떠한 수의 0의 갯수를 세기 위해서는 소인수 분해를 한 후에 2와 5의 갯수를 센후 적은 수를 구하면 된다. => 이번 입력 값은 20억개이므로 브루트포스로 2와 5의 갯수를 세어보면 TLE가 발생한다. =>그러한 문제를 해결하기 위해 다음과 같은 방법을 사용한다. for( long i=5; i이와 같은 방법을 사용할 경우 시간 단축의 효과가 있다. => 본인은 이 방법을 깨닫기까지 오랜 시간이 걸렸다. => 입력값이 20억까지 갈 수 있으므로 자료형을 주의하여 써야한다. #include #include #include #include #include using namespace std; long CountFive(long number) { long cnt=0; for( long i=5; i N ..
-
백준 1929 - 소수구하기백준 algorithm 2020. 3. 13. 14:19
=>에라토스테네스의 체를 사용할 줄 아는지를 묻는 문제이다. =>j를 검색할 때 I*I부터 시작하니 자료형을 int를 써야하는 지, long을 써야하는지 long long을 써야하는지 정확히 봐야한다. =>위의 문제에서 2번이나 틀렸다. #include #include #include #include using namespace std; int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); int A, B; cin>> A>>B; vector prime(B-A); int pn=0; vector check(B); int limit=B; for(long i=2; i=A) { prime[pn++]=i; } for(l..
-
백준 2609 - 최대공약수와 최소공배수백준 algorithm 2020. 3. 13. 13:03
=> GCD와 LCM ( 최대공약수와 최소공배수 ) 를 구할 수 있는지에 대한 문제이다. => 함수 두개를 생성하여 만들었다. => GCD : 유클리드 호제법 LCM :gcd*(A/gcd)*(B/gcd) 이다. #include #include #include #include using namespace std; int GCD (int A, int B) { while(B!=0) { int tmp=B; B=A%B; A=tmp; } return A; } int LCD(int A, int B) { int gcd=GCD(A, B); return gcd*(A/gcd)*(B/gcd); } int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.ti..
-
백준 11656 - 접미사 배열백준 algorithm 2020. 3. 13. 12:25
=> substr 함수의 사용을 할줄 아는지 묻는 문제이다. => string이 들어가 있는 배열 역시 sort함수를 통해 정렬 할 수 있다. (연산자 재정의 no need) => for문을 쓸 경우 length()같은 함수를 for문에 쓸 경우 시간이 더 걸리게 된다. 그 이전에 int limit = s.length() 를 해주어야 시간을 save 할 수 있게 된다. #include #include #include #include using namespace std; int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); string s; cin>>s; vector arr; int limit=s.length(..
-
백준 10824 - 네 수백준 algorithm 2020. 3. 11. 23:31
=> stoll 함수를 사용할 줄 아는지 묻는 문제이다. #include #include using namespace std; long long merge(long num1, long num2) { string t1 =to_string(num1) + to_string(num2); long long val = stoll(t1); return val; } int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); long A, B, C, D; cin>> A >> B >> C>>D; long long answer = merge(A, B); answer += merge(C,D); cout
-
백준 11655 - ROT13백준 algorithm 2020. 3. 11. 23:10
=> 공백이 포함된 문자열을 입력받아 각 문자마다 아스키코드로 13을 더해주면 된다. => 소문자와 대문자의 범위를 벗어날 때의 예외처리를 해주어야한다. => 본인은 소문자의 아스키코드를 int형으로 받아 따로 처리해주었다. // // main.cpp // Baekjoon // // Created by 이준후 // Copyright © 2020 이준후. All rights reserved. // #include #include using namespace std; int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); string s; getline(cin, s); for(int i=0; i= 65 && s[i..
-
백준 10820 - 문자열 분석백준 algorithm 2020. 3. 10. 02:26
=> string을 분석하면 되는 문제이다. => string의 길이가 0일때의 예외처리를 해주지 않으면 틀렸다고 한다. 이 부분을 유의해서 풀어야한다. #include #include using namespace std; int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); int arr[4]={0}; // Small, Big, number, " " int cnt=0; string s; while(cnt