본문 바로가기

Algorithm/백준

(22)
[백준] 1935번: 후위 표기식2 https://www.acmicpc.net/problem/1935 1935번: 후위 표기식2 첫째 줄에 피연산자의 개수(1 ≤ N ≤ 26) 가 주어진다. 그리고 둘째 줄에는 후위 표기식이 주어진다. (여기서 피연산자는 A~Z의 영대문자이며, A부터 순서대로 N개의 영대문자만이 사용되며, 길이는 100을 넘지 않는다) 그리고 셋째 줄부터 N+2번째 줄까지는 각 피연산자에 대응하는 값이 주어진다. (3번째 줄에는 A에 해당하는 값, 4번째 줄에는 B에 해당하는값 , 5번째 줄에는 C ...이 주어진다, 그리고 피연산자에 대응 하는 값은 정수이다) www.acmicpc.net 후위 표기식으로 쓰여진 식을 계산하는 문제. 중위 표기식을 후위 표기식으로 변환해야 했던 이전문제보다 훨씬 쉽다. 식의 글자를 하나씩..
[백준] 1918번: 후위 표기식 https://www.acmicpc.net/problem/1918 1918번: 후위 표기식 첫째 줄에 중위 표기식이 주어진다. 단 이 수식의 피연산자는 A~Z의 문자로 이루어지며 수식에서 한 번씩만 등장한다. 그리고 -A+B와 같이 -가 가장 앞에 오거나 AB와 같이 *가 생략되는 등의 수식은 주어지지 않는다. 표기식은 알파벳 대문자와 +, -, *, /, (, )로만 이루어져 있으며, 길이는 100을 넘지 않는다. www.acmicpc.net 스택 하면 무조건 나오는 중위 표기식을 후위 표기식으로 바꾸는 문제 자료구조 시간에도 배웠지만 연습삼아 풀어보았다. 연산자별로 우선 순위를 정해놓고 식에서 연산자가 나오면 스택에 저장한다. 그리고 다음 연산자가 나올 때마다 스택의 연산자와 우선순위를 비교해서 작거..
[백준] 5430번: AC https://www.acmicpc.net/problem/5430 5430번: AC 문제 선영이는 주말에 할 일이 없어서 새로운 언어 AC를 만들었다. AC는 정수 배열에 연산을 하기 위해 만든 언어이다. 이 언어에는 두 가지 함수 R(뒤집기)과 D(버리기)가 있다. 함수 R은 배열에 있는 숫자의 순서를 뒤집는 함수이고, D는 첫 번째 숫자를 버리는 함수이다. 배열이 비어있는데 D를 사용한 경우에는 에러가 발생한다. 함수는 조합해서 한 번에 사용할 수 있다. 예를 들어, "AB"는 A를 수행한 다음에 바로 이어서 B를 수행하는 함수이다. www.acmicpc.net 문제는 간단하다 숫자 리스트를 입력받은 후, R이면 리스트의 순서를 뒤집어주고 D면 맨 앞 원소를 버린다. 덱을 이용하면 굳이 리스트의 순서..
[백준] 3078번: 좋은 친구 https://www.acmicpc.net/problem/3078 3078번: 좋은 친구 문제 상근이는 환갑을 바라보던 나이에 수능 시험을 다시보고 교대에 입학했고, 초등학교 선생님으로 취직했다. 상근: 요즘 애들은 친구를 사귀지 않나봐. 내가 앞에서 보고 있으면, 친구가 있는 학생이 별로 없는 것 같아. ??: 오빠! 오빠는 말콤의 친구와 성적이라는 책 안 읽어 봤어? 이 책에는 성적과 친구가 무슨 관계가 있는지 나와. 요즘 애들은 친구를 사귀기 전에 먼저 그 친구의 반 등수를 살펴봐. 말콤은 이 연구를 하기 위해서 6년동안 초등학교에서 선 www.acmicpc.net 큐 연습문제. 풀이를 보고 구현했다. 그냥 배열로 풀면 시간복잡도가 O(N^2)이 되는데 N이 300,000 이하이므로.. 배열로는 풀..
[백준] 10993번: 별 찍기 - 18 https://www.acmicpc.net/problem/10993 10993번: 별 찍기 - 18 예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요. www.acmicpc.net 재밌어보여서 풀기 시작했다가 복잡해서 당황했다..;; 출력 삼각형을 잘 관찰해보면 가장 큰 삼각형 안에 이전 수준의 삼각형이 있고, 또 그 안에 이전 수준의 삼각형이 있고... 를 반복하는 것을 알 수 있다. 삼각형의 크기는 이전 수준의 삼각형의 대략 2배정도이므로 지수승으로 커진다. 이 점을 이용해서 top-down(재귀) 방식이나 bottom-up(for문) 방식으로 풀면 되는데 나는 for문으로 풀었다. 한줄짜리 string을 저장하는 덱을 선언한 뒤, 가장 작은 삼각형부터 덱에 넣는다. 그리고 그보다 한단계 큰 삼각형을..
[백준] 3190번: 뱀 https://www.acmicpc.net/problem/3190 3190번: 뱀 문제 'Dummy' 라는 도스게임이 있다. 이 게임에는 뱀이 나와서 기어다니는데, 사과를 먹으면 뱀 길이가 늘어난다. 뱀이 이리저리 기어다니다가 벽 또는 자기자신의 몸과 부딪히면 게임이 끝난다. 게임은 NxN 정사각 보드위에서 진행되고, 몇몇 칸에는 사과가 놓여져 있다. 보드의 상하좌우 끝에 벽이 있다. 게임이 시작할때 뱀은 맨위 맨좌측에 위치하고 뱀의 길이는 1 이다. 뱀은 처음에 오른쪽을 향한다. 뱀은 매 초마다 이동을 하는데 다음과 같은 규칙을 따 www.acmicpc.net 문제가 길고 난해하다. 구현을 위해서는 조건을 세세하게 잘 읽어봐야 한다. 1. 뱀 머리를 늘린 후 꼬리 줄이기 2. 보드 행열의 인덱스는 1~..
[백준] 5397번: 키로거 https://www.acmicpc.net/problem/5397 5397번: 키로거 문제 창영이는 강산이의 비밀번호를 훔치기 위해서 강산이가 사용하는 컴퓨터에 키로거를 설치했다. 며칠을 기다린 끝에 창영이는 강산이가 비밀번호 창에 입력하는 글자를 얻어냈다. 키로거는 사용자가 키보드를 누른 명령을 모두 기록한다. 따라서, 강산이가 비밀번호를 입력할 때, 화살표나 백스페이스를 입력해도 정확한 비밀번호를 알아낼 수 있다. 강산이가 비밀번호 창에서 입력한 키가 주어졌을 때, 강산이의 비밀번호를 알아내는 프로그램을 작성하시오. 입력 첫째 줄에 테 www.acmicpc.net list로 푸는게 속도가 더 빠를 것이라고 생각했는데 deque으로 푸는게 더 빨랐다. deque이 list보다 메모리를 덜 잡아먹어서 그..
[백준] 1021번: 회전하는 큐 https://www.acmicpc.net/problem/1021 1021번: 회전하는 큐 첫째 줄에 큐의 크기 N과 뽑아내려고 하는 수의 개수 M이 주어진다. N은 50보다 작거나 같은 자연수이고, M은 N보다 작거나 같은 자연수이다. 둘째 줄에는 지민이가 뽑아내려고 하는 수의 위치가 순서대로 주어진다. 위치는 1보다 크거나 같고, N보다 작거나 같은 자연수이다. www.acmicpc.net #include #include using namespace std; deque dq; int N, M; int arr[50]; int cnt = 0; void moveLeft() { int front = dq.front(); dq.pop_front(); dq.push_back(front); } void moveR..