SW expert
-
5644.무선충전알고리즘/SW Expert Academy 2020. 6. 2. 22:57
이번에 풀어볼 문제는 SW Expert의 5644 무선충전이다. ( 아래링크는 SW Expert 로그인하고 눌러야함.. ) SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 결론은 설계실패로 문제를 풀지 못했다 => 다른분의 블로그를 참조하여 공부함 : https://swjeong.tistory.com/162 3시간을 초과했고 설계실패의 이유는 한가지를 간과했다. 1. BC의 범위를 배열에 표시했다. 2. A사용자와 B사용자가 중복되는 구간을 따로 배열을 만들어 표시했다. 3. 중복구간을 제외한 나머지 구간의 합을 구했다. 4. 설계 실패가 발생한 지점 => 중복구간에서 어떤 BC들이 ..
-
1229.암호문2알고리즘/SW Expert Academy 2020. 3. 31. 22:57
이번에 풀어볼 문제는 이전에 풀었던 암호문 1228에 하나의 조건만 추가된 문제이다. 이전에는 삽입만 존재했다면 이번에는 삭제가 생겼다. 생각보다 어렵진 않았고 문제를 풀면서 느낀점은 이러한 STL을 이용할 때 iterator를 잘 다뤄야 한다는 것을 느꼈다. #include #include using namespace std; int main() { for(int k=1; k> n; // 입력 list ans; // 암호문을 입력할 리스트 for(int i=0; i> tmp; ans.push_back(tmp); // 입력받은 값 리스트에 저장 } int m; // 명령어 갯수 cin >> m; // 입력 list ans2; // 명령어 저장 리스트 for(int i=0; i> check; // 입력 i..
-
1228.암호문1알고리즘/SW Expert Academy 2020. 3. 29. 18:07
이번에 풀 문제는 Sw expert의 1228 암호문1이다. 이 문제는 STL list 사용법을 익히는데 도움이 되었던 것 같다. 생각보다 오래걸렸고 그 이유는 입력받는 부분에서 헤맸다..;; 또한 구현 시에 입력하는 방법에 대해서도 생각을 다시해보게 되었다. 입력을 구현하는 것도 굉장히 중요하다는 것을 깨달았다. #include #include using namespace std; int main() { for(int e=1; e> n; // 입력 for(int i=0; i> a; // 하나씩 받아서 ans.push_back(a); // list에 넣어준다 } int m; // 명령어 갯수 cin >> m; // 입력 for(int i=0; i> b; // 입력받아서 다음 걸 받도..
-
1226.미로1 & 1227.미로2알고리즘/SW Expert Academy 2020. 3. 26. 00:16
이번문제는 미로1과 미로2이다. 문제는 간단하다. 주어진 출발지에서 주어진 목적지까지 갈 수 있나 없나를 체크하는 알고리즘을 구현하는 것이고 나는 DFS를 이용하기로 했다. 문제는 queue강의에서 출제되었지만 나는 DFS를 Stack을 이용해서 구현해보았다. 앞서 stack과 queue를 나름 많이 다뤄보아서인지 사용이 자연스러워진거같다. 처음 시작할 때는 분명 헷갈렸던 것 같은데.. ㅎㅎ 미로1과 미로2는 MAX를 16이나 100이냐 말고 코드가 달라진게 없어서 한 번에 포스팅했다. #include #include #include using namespace std; #define MAX 16 // 100 int dx[4]={-1,1,0,0}; // X축 이동 int dy[4]=..
-
1225. 암호생성기알고리즘/SW Expert Academy 2020. 3. 24. 22:09
이번 문제는 너무 쉽다.. 그래서 딱히 설명보다는 그냥 코드만 남겨두도록 하겠다.. #include #include using namespace std; int main() { for(int k=1; k> num; for(int i=0; i> a; q.push(a); } int count = 1; while(q.back()>0){ if(count>5) count=1; int b = q.front(); b-=count; q.pop(); q.push(b); count++; } if(q.back()
-
1224.계산기3알고리즘/SW Expert Academy 2020. 3. 24. 20:42
드디어 계산기 문제의 마지막 3번째이다. 이전과 똑같이만 이번에는 '(' 와 ')'가 등장해서 살짝 다른 계산이 필요했다. 괄호는 무조건 넣어주고 괄호의 짝이 맞아떨어지게되면 스택에 저장된 괄호의 모든 연산자를 pop해야한다는 것이 특징이었다. 생각보다 오랜시간이 걸리지 않은 문제였다. 물론 나보다 간단하게 푼사람도 많을 것이라고 생각한다. 하지만 스스로 생각하면서 뚝딱 풀어낸 것에 의의를 두어야겠다. #include #include #include #include using namespace std; int main() { int n; for(int k=1; k> n; string str; cin >> str; stack s; // 피연산자들이 담길 stack queue q; //..
-
1223.계산기2알고리즘/SW Expert Academy 2020. 3. 23. 21:59
이번에 풀어볼 문제는 SW expert에 있는 계산기2이다. 계산기1과 달라진 점은 예상했던대로 예외처리가 늘어나 '+' 뿐아니라 '*'도 비교해야 한다는 것이다. 역시나 예외처리를 잘해주면 쉽게 풀 수 있을 것 같다. 나는 연산자의 경우 Stack에 넣고 피연산자는 Queue에 넣어서 계산하도록 했다. 후위계산법의 방식은 다른 블로그에 많으니 참고하면 될 거 같다. #include #include #include using namespace std; int main() { int n; for(int k=1; k> n; string str; // 문자열 입력 cin >> str; stack s; // 연산자 저장공간 queue q; // 피연산자 및 후위계산식이 완성될 공간 for(..
-
1222.계산기1알고리즘/SW Expert Academy 2020. 3. 23. 21:59
이번문제는 후위계산식으로 만들어서 계산하는 문제이다. 그렇게 어려운 난이도는 아니였다. 후위계산법을 제대로 이해하고 문제를 풀면된다. 연산자가 '+' 만 주어졌기 때문에 예외처리할게 많지 않았다. 아마 문제에 숫자가 붙은걸로봐서 앞으로 연산자들이 추가될 것 같은 예감이 든다ㅋㅋㅋ 허접한 코드로 일단 푸는 것에 의의를 두었다. #include #include #include #include using namespace std; int main() { int n; for(int k=1; k> n; string str; cin >> str; stack s1; queues2; char v; for(int i=0; i