백준 algorithm
-
백준 10808 - 알파벳 개수백준 algorithm 2020. 3. 10. 01:45
=>string을 입력받은 후에 만들어놓은 배열에 하나씩 추가해준다. =>아스키코드를 통해 index를 접근하면 된다. #include #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; int alphabet[26]={0}; for(int i=0; i
-
백준 1850 - 최대공약수백준 algorithm 2020. 3. 10. 01:19
=>실제로 입력받은 갯수로 1로 이루어진 숫자로 최대 공약수를 만들면 안된다. =>입력 받은 값의 최대 공약수를 구한 다음 그 값을 limit으로 1을 출력하면 된다. #include #include #include #include #include using namespace std; int gcd(long long a, long long b) { long long c; while (b != 0) { c = a % b; a = b; b = c; } return a; } int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); long long A,B; cin>>A>>B; int limit=gcd(A,B); for..
-
백준 5622 - 다이얼백준 algorithm 2020. 3. 8. 17:43
=> case 문으로 단순히 더하면 되는 문제이다. // // main.cpp // Baekjoon // // Created by 이준후 // Copyright © 2020 이준후. All rights reserved. // #include #include #include #include #include using namespace std; int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); string dial; cin >> dial; int answer=0; for(int i=0; i
-
백준 1918 - 후위 표기식백준 algorithm 2020. 3. 8. 17:29
후위표기식2 와 달리 계산하는 것이 아닌 중위표기식을 후위표기식으로 바꾸는 방법이다. =>연산자를 stack에 넣는 것으로 한다. => ( 여는 괄호가 나오면 여는 괄호를 무조건 stack에 쌓는다. => ) 닫는 괄호가 나오면 (여는 괄호가 나올 때까지 stack을 pop하며 찾는다. => stack안에 연산자들은 위에 있는 연산자가 아래에 있는 연산자보다 우선순위가 높아야한다. (같아서도 안됨!) => ( 여는 괄호의 경우를 감안하여 코드를 짜야한다. *** 왜 나는 한 문제를 푸는데 기본적으로 한시간이 쓰이는지.... 조금 더 빨리 답을 찾아가는 습관을 들여야겠다. #include #include #include #include #include using namespace std; stack st;..
-
백준 1935 - 후위 표기식2백준 algorithm 2020. 3. 8. 02:02
=> 피연산자들은 stack에 차례로 쌓은 후, 연산자를 만나면 해당 연산 작업을 한 후 다시 스택에 쌓는다. => 여기서 주의해야할 점은 stack top 아래 +-*/(연산자) stack top 순서라는 것을 간과해서는 안된다. =>피연산자들을 stack에 쌓기 위해서는 숫자배열에 접근하여야하는데, 이때 후위연산식에서 A, B , C 등의 아스키코드를 이용하여 인덱스 접근을 할 수 있다. ***본이은 이 부분에서 한시간을 넘게 소비하였다. #include #include #include #include #include using namespace std; int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr)..
-
백준 5543- 상근날드백준 algorithm 2020. 3. 5. 01:39
#include #include #include #include #include using namespace std; int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); int Burger[3]; int Drink[2]; int MinB=2001; int MinD=2001; for(int i=0;i>Burger[i]; if(Burger[i]Drink[j]; if(Drink[j]
-
백준 18298 - 오큰수백준 algorithm 2020. 3. 5. 00:19
=>이해하는데 오래 걸린 문제이다. =>stack을 사용하여 푸는 문제이다. =>stack에 들어가는 숫자는 현재 오큰수를 찾지 못한 수의 idnex이다. =>현재 index에 들어있는 값이 stack의 top index에 해당하는 값보다 크면 해당 top index의 오큰수를 찾게 된다. *** while(!st.empty() && arr[i]>arr[st.top()] ) 은 제대로 동작하지만, while(arr[i]>arr[st.top() && !st.empty() ] 은 제대로 동작하지 않는다. => 이유는 stack의 값이 비어있을 때 top를 참조할 수 없기 때문인데, empty로 먼저 거를 경우 제대로된 동작을 할 수 있다. #include #include #include #include us..
-
백준 10799 - 쇠막대기백준 algorithm 2020. 3. 3. 00:24
stack을 사용하여 풀 수 있다. -> ' ( '를 만나면 stack에 해당 index를 push한다. -> ' ) '를 만나면 stack의 top과 ' ) '를 가리키는 인덱스의 크기가 1이면 레이저이므로 stack의 사이즈를 answer에 더한다. -> 위의 값이 1이 아닌 경우 answer에 1을 더한다. #include #include #include using namespace std; int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); string str; cin>>str; stack st; int answer=0; int size=str.length()-1; int index=0; while(..