Algorithm 102

[백준 1764] 듣보잡

듣보잡 문제 설명 문제 설명은 사진과 같다. 알고리즘 N,M을 입력받고 이름까지 입력 받는다 이분탐색을 이용하기 위해 sort 함수로 정렬한다 이분 탐색을 해서 중복 된 값을 찾아낸다. #include #include #include #include #include #include using namespace std; int N, M; int main() { ios::sync_with_stdio(0); cin.tie(NULL); cout.tie(NULL); vector v;//듣도 못한 사람 vector vs;//보도 못한 사람 cin >> N >> M; for (int i = 0; i > s; v.push_back(s); } for..

Algorithm 2021.07.29

[백준 1074] Z

Z 문제설명 위의 그림처럼 2차원 배열을 z모양으로 탐색한다. R과 C가 주어질 때 몇 번째로 방문하는지 출력하도록 하자. 이때 2차원배열의 크기는 N으로 첫 줄에 주어진다. 2의 n승이 되도록 한다. 알고리즘 N, R, C를 divide 함수에 크기와 x,y좌표를 전달해서 4개로 나누어 탐색을 시작한다. divide함수는 조건이 있는데 해당하는 칸(x,y)좌표가 찾고자 하는 칸에 온다면 cnt값을 출력하고 종료한다. -> 현재 찾고자 하는 값에 도달했다는 의미이다. 만약에 크기가 1인 경우 각각 계산하도록 한다. 만약 찾으러 들어온 x,y의 좌표가 아예 구역에 해당하지 않고 다른 칸인 경우에는 제곱해서 계산을 더하고 종료시킨다. -> 시간 단축을 위함이다. 위의 경우에도 해당하지 않는 경우 분할을 더 ..

Algorithm 2021.07.29

[백준 1620] 나는야 포켓몬 마스터 이다솜

나는야 포켓몬 마스터 이다솜 문제설명 포켓몬의 수 N과 테스트 수 M을 입력받는다. N번 포켓몬의 이름을 입력 받고 M번테스트 할때 포켓몬의 번호가 입력되면 이름을, 포켓몬의 이름이 입력되면 번호를 출력한다. 알고리즘 N,M을 입력받고 포켓몬을 입력받는다. 포켓몬의 이름과 번호를 저장하기 위한 벡터를 pair로 선언하고, 이름만 저장하는 벡터 또한 만든다. 이름과 번호가 저장된 벡터를 정렬해준다. M번 반복해서 숫자인 경우 이름만 저장된 벡터에서 값을 출력하고, 이름이 입력된 경우 이분탐색으로 찾아준다. #include #include #include #include #include #include using namespace std; int N, M; int main() { ios::sync_with_..

Algorithm 2021.07.28

[백준 2630] 색종이 만들기

색종이 만들기 문제설명 정사각형 형태의 색종이의 가로 세로 길이가 입력된다. 이때 항상 N=2^k이다. 색종이 각 칸은 흰색(0) 또는 파란색(1)로 칠해져 있고 종이를 잘랐을 때 모두 같은 색이 아니면 4등분 한다. 이 과정을 더 이상 자를 수 없을 때까지 반복한다. 그리고 흰색 종이의 수와 파란색 종이의 수를 출력한다. 알고리즘 색종이의 가로(=세로)길이를 입력 받고 각 칸마다 흰색은 0 파란색은 1로 입력 받는다. 가로 길이와 0,0을 divide 함수로 전달한다. 만약 num이 1인 경우에는 더 이상 나눌 수 없기 때문에 색깔을 판별하여 올려준다. divide 함수에서는 각 칸의 흰색칸과 파란색 칸의 수를 세어서 현재 함수의 num(가로, 세로)의 제곱 수와 일치하는지 확인한다. 일치하면 더 이상..

Algorithm 2021.07.28

[백준 11866] 요세푸스 문제0

요세푸스 문제0 문제 설명 N,K를 입력 받고 원에서 K번째 사람을 계속 제거한다. 이 때 제거 된 사람의 번호를 출력 시킨다. 알고리즘 값을 입력 받고 , N 만큼 vector에 넣는다. 출력하고자 하는 index라는 변수에 K-1을 더한다. 더하는 동작을 반복문 안에서 반복하다 보면 index범위를 넘어가는 경우가 있기 때문에 벡터의 사이즈 만큼 범위에 해당 되도록 뺀다. index 벡터 값을 출력 시킨다. 벡터에서 해당 변수를 삭제 시킨다. #include #include #include using namespace std; int main() 5 { int num =0,K=0; cin >> num>>K; vector v; for (int i = 0; i < num; i++) v.pus..

Algorithm 2021.07.28

[백준 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