전체 글 121

[백준 1003] 피보나치 함수

피보나치 함수 문제 설명 피보나치 함수에서 0과 1이 각각 출력 되는지 결과 값을 출력한다. 이때 T의 수만큼 테스트케이스를 반복하고 N(40까지)의 값을 각각 입력 받는다. 알고리즘 배열에 40까지의 예측 값을 저장해 둔다. 테스트케이스와 0일때 1일때 그 외일 때의 경우로 나누어 출력한다. #include #include #include using namespace std; int main() { int T, N; cin >> T; int arr[41] = {0,1,1}; for (int i = 3; i > N; if (N == 0) cout

Algorithm 2021.07.28

[백준 10828] 스택

스택 문제 설명 정수를 저장하는 스택을 구현하고 주어진 명령어를 처리하여 나오는 결과를 한 줄 씩 출력한다. 첫 줄에 명령어 실행 횟수를 입력받는다. 명령어는 다음과 같다. push X: 정수 X를 스택에 넣는 연산이다. pop: 스택에서 가장 위에 있는 정수를 빼고, 그 수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다. size: 스택에 들어있는 정수의 개수를 출력한다. empty: 스택이 비어있으면 1, 아니면 0을 출력한다. top: 스택의 가장 위에 있는 정수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다. 알고리즘 테스트 케이스 수 만큼 명령어를 읽어 들이고 실행한다. #include #include #include #include #inclu..

Algorithm 2021.07.28

[백준 10845] 큐

스택 문제 설명 정수를 저장하는 큐을 구현하고 주어진 명령어를 처리하여 나오는 결과를 한 줄 씩 출력한다. 첫 줄에 명령어 실행 횟수를 입력받는다. 명령어는 다음과 같다. push X: 정수 X를 큐에 넣는 연산이다. pop: 큐에서 가장 앞에 있는 정수를 빼고, 그 수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다. size: 큐에 들어있는 정수의 개수를 출력한다. empty: 큐가 비어있으면 1, 아니면 0을 출력한다. front: 큐의 가장 앞에 있는 정수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다. back: 큐의 가장 뒤에 있는 정수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다. 알고리즘 테스트 케이스 수 만큼 명령어를 ..

Algorithm 2021.07.28

[백준 11659] 좌표 정렬하기

좌표 정렬하기 문제설명 2차원 평면 위의 점 N개가 주어진다. 좌표를 x좌표가 증가하는 순으로, x좌표가 같으면 y좌표가 증가하는 순서로 정렬한 다음 출력하는 프로그램을 작성하시오. 알고리즘 테스트 케이스 수를 입력 받고 수만큼 반복하여 2차원 좌표를 입력 받는다. algorithm 헤더의 sort 함수를 사용하여 정렬한다. #include #include #include #include #include using namespace std; bool comp(const pair & a, const pair&b) { if (a.first == b.first) return a.second < b.second; return a.first < b.first; } int main() { int num = 0; c..

Algorithm 2021.07.28

[백준 10866] 덱

스택 문제 설명 정수를 저장하는 덱을 구현하고 주어진 명령어를 처리하여 나오는 결과를 한 줄 씩 출력한다. 첫 줄에 명령어 실행 횟수를 입력받는다. 명령어는 다음과 같다. push_front X: 정수 X를 덱의 앞에 넣는다. push_back X: 정수 X를 덱의 뒤에 넣는다. pop_front: 덱의 가장 앞에 있는 수를 빼고, 그 수를 출력한다. 만약, 덱에 들어있는 정수가 없는 경우에는 -1을 출력한다. pop_back: 덱의 가장 뒤에 있는 수를 빼고, 그 수를 출력한다. 만약, 덱에 들어있는 정수가 없는 경우에는 -1을 출력한다. size: 덱에 들어있는 정수의 개수를 출력한다. empty: 덱이 비어있으면 1을, 아니면 0을 출력한다. front: 덱의 가장 앞에 있는 정수를 출력한다. 만약..

Algorithm 2021.07.28

[백준 5430] AC

AC 문제 설명 AC라는 언어에 R, D 두가지 함수가 존재한다. R은 뒤집기, D는 첫 번째 숫자를 지운다. 이때 입력으로는 테스트 케이스 수 (T)가 주어지고, 숫자의 수, 배열 [x1,x2,...]이 주어진다. 각각 함수 실행 결과를 출력 시킨다. 이때 배열에 숫자가 없는데 D를 실행시키면 error를 출력시킨다. 알고리즘 필요한 입력들을 받고, 배열을 deque에 넣어준다. 이때 배열에 넣을 때 숫자의 범위는 1부터 100까지인 것을 감안하고 처리하여 넣는다. R과 D를 차례차례 읽어서 실행한다. R의 경우 반복문 내에서 실행하면 시간초과가 발생하므로 bool type flag를 not을 사용하여 처리한다. D의 경우 deque의 비어있는지 여부를 확인하고 비어있는 경우 error를 출력한다. 비..

Algorithm 2021.07.28

[백준 10773] 제로

제로 문제설명 단순히 0이 들어오면 가장 최근에 입력되었던 수를 뺴고 그렇지 않으면 저장한 뒤, 전체 수의 합을 출력하는 문제이다. 알고리즘 입력된 수가 0이면 stack 에서 top을 지운다. 입력된 수가 1이면 stack 에 넣는다. #include #include #include using namespace std; int main() { int K; cin >> K; stack s; int x; for (int i = 0; i > x; if (x == 0) s.pop(); else s.push(x); } int sum = 0; for (int i = 0; s.size(); i++) { sum += s.top(); s.pop(); } cout 나중에 온 것이 가장 먼저..

Algorithm 2021.07.27

[백준 7576] 토마토

토마토 문제설명 첫 줄에 가로 M , 세로 N 그리고 각각의 가로 세로에 맞춰 0,1,-1의 입력이 각각 주어진다. 이때 0은 익지 않은 토마토, 1은 익은 토마토, -1은 토마토가 없는 상태를 의미한다. 토마토 1개가 익어있으면 상하좌우 방향의 토마토는 다음날 익는다. 그리고 대각선은 익지 않는다. 모든 토마토가 익는데 걸리는 날짜를 구한다. 만약 토마토가 전부 익을 수 없다면 -1을 출력 시킨다. 이미 익어있는 상태면 0을 출력한다. 알고리즘 입력 받는 즉시 1이 들어오면 queue 에 담아 놓는다 -> 이는 익어있는 토마토가 모두 다른 토마토에 영향을 끼치게 하기 위함이다. bfs함수를 실행한다. visited 배열을 조회 하는데, 최대 값이 모든 토마토가 익는데 걸린 기간이라고 간주 할 수 있다...

Algorithm 2021.07.27

[백준 12904] A와 B

A와 B 문제 설명 시작하는 문자열 S와 만들고자 하는 문자열 T를 입력 받은 뒤, 규칙을 지켜서 T로 만들 수 있으면 1을 출력하고 그렇지 않으면 S를 출력한다. 그 규칙은 다음과 같다. 문자열의 뒤에 A를 추가한다. 문자열을 뒤집고 뒤에 B를 추가한다. 알고리즘 S와 T를 입력 받는다. 반복문을 통해서 T를 맨 뒤 글자부터 확인한다. 맨뒤가 A인 경우 맨 뒤 한 글자를 지운다. 맨뒤가 B인 경우 맨 뒤 한 글자를 지우고 뒤집는다. 반복문에서 S의 길이와 T의 길이가 같은 경우 반복을 멈춘다. S와 T를 비교해서 같으면 1 다르면 0을 출력시킨다. 정답 코드 #include #include #include #include using namespace std; int main() { string S, T..

Algorithm 2021.07.27

[백준 2206] 벽 부수고 이동하기

벽 부수고 이동하기 문제 설명 N,M의 값을 입력받고 0일때는 이동이 가능하다. 1인경우 벽이기 때문에 이동할 수 없다. 하지만 단 한번 벽을 부수고 이동하는 것이 가능하다. 최적 이동경로를 구하도록 하자. 알고리즘 입력 값을 모두 입력 받은 뒤 (0,0)에서 시작하고 벽을 뚫을 수 있는 지 여부를 나타내기위해 visited에 배열을 한 차원 추가한다. BFS 알고리즘을 사용하여 현재 그래프가 0이고 방문하지 않은 경우는 접근이 가능하다. 그래프가 1이고 현재 block이라는 변수가 1일때는 벽을 부수고 방문하는 것이 가능하다. 이때 값을 계산할 때 한 번 부쉈기 때문에 1을 0으로 바꾸어 준다. 이동 할 수 없는 경우 -1을 반환한다. #include #include #include #include #..

Algorithm 2021.07.27