본문 바로가기
728x90

코테8

[c++] 백준 덱(10866) 문제 https://www.acmicpc.net/problem/10866 간단히 덱의 기본동작을 구현하는 문제이다. push_front X: 정수 X를 덱의 앞에 넣는다. push_back X: 정수 X를 덱의 뒤에 넣는다. pop_front: 덱의 가장 앞에 있는 수를 빼고, 그 수를 출력한다. 만약, 덱에 들어있는 정수가 없는 경우에는 -1을 출력한다. pop_back: 덱의 가장 뒤에 있는 수를 빼고, 그 수를 출력한다. 만약, 덱에 들어있는 정수가 없는 경우에는 -1을 출력한다. size: 덱에 들어있는 정수의 개수를 출력한다. empty: 덱이 비어있으면 1을, 아니면 0을 출력한다. front: 덱의 가장 앞에 있는 정수를 출력한다. 만약 덱에 들어있는 정수가 없는 경우에는 -1을 출력한다. .. 2023. 7. 14.
[c++] 백준 회전하는 큐(1021) 문제 https://www.acmicpc.net/problem/1021 문제가 이해가 안됨. 보고 또 보고 이해함. 지민이의 큐는 저 위의 3가지 밖에 동작을 할 수 없다. 따라서, 무조건 첫 번째 원소만 뽑을 수 있고, 뒤에서 뽑을 수 없음 (덱의 구조상 뒤에서 삭제도 가능한데 이것을 생각하면 안됨. 이게 어떻게 덱 문제인지..? --> 자세히 보니 큐 문제이긴 한데, 뒤에서 삽입이 가능해야 하니 덱을 사용해야 한다. 자체적으로 조건을 걸어줘서 풀어야 하는 듯.) 또한, 1번의 연산은 count를 하지 않고, 2번과 3번만 count해야 한다. 그러므로 뽑고자 하는 원소를 최소한의 연산으로 큐의 앞쪽에 위치시키도록 하면 된다. 풀이 1. 덱에 인덱스 번호를 저장해서 초기화 해야 한다. 왜냐하면, 덱에 .. 2023. 7. 14.
[c++] 백준 큐(10845) 문제 정수를 저장하는 큐를 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램을 작성하시오. 명령은 총 여섯 가지이다. push X: 정수 X를 큐에 넣는 연산이다. pop: 큐에서 가장 앞에 있는 정수를 빼고, 그 수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다. size: 큐에 들어있는 정수의 개수를 출력한다. empty: 큐가 비어있으면 1, 아니면 0을 출력한다. front: 큐의 가장 앞에 있는 정수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다. back: 큐의 가장 뒤에 있는 정수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다. 입력 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 .. 2023. 7. 13.
[c++] 백준 키로거(5397), 연결리스트, 반례모음 문제 https://www.acmicpc.net/problem/5397 문제 창영이는 강산이의 비밀번호를 훔치기 위해서 강산이가 사용하는 컴퓨터에 키로거를 설치했다. 며칠을 기다린 끝에 창영이는 강산이가 비밀번호 창에 입력하는 글자를 얻어냈다. 키로거는 사용자가 키보드를 누른 명령을 모두 기록한다. 따라서, 강산이가 비밀번호를 입력할 때, 화살표나 백스페이스를 입력해도 정확한 비밀번호를 알아낼 수 있다. 강산이가 비밀번호 창에서 입력한 키가 주어졌을 때, 강산이의 비밀번호를 알아내는 프로그램을 작성하시오. 강산이는 키보드로 입력한 키는 알파벳 대문자, 소문자, 숫자, 백스페이스, 화살표이다. 입력 첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 한줄로 이루어져 있고, 강산이가 입력한 순서.. 2023. 7. 13.
[c++] 백준 에디터(1406), 연결리스트 문제 https://www.acmicpc.net/problem/1406 한 줄로 된 간단한 에디터를 구현하려고 한다. 이 편집기는 영어 소문자만을 기록할 수 있는 편집기로, 최대 600,000글자까지 입력할 수 있다. 이 편집기에는 '커서'라는 것이 있는데, 커서는 문장의 맨 앞(첫 번째 문자의 왼쪽), 문장의 맨 뒤(마지막 문자의 오른쪽), 또는 문장 중간 임의의 곳(모든 연속된 두 문자 사이)에 위치할 수 있다. 즉 길이가 L인 문자열이 현재 편집기에 입력되어 있으면, 커서가 위치할 수 있는 곳은 L+1가지 경우가 있다. 이 편집기가 지원하는 명령어는 다음과 같다. L : 커서를 왼쪽으로 한 칸 옮김 (커서가 문장의 맨 앞이면 무시됨) D : 커서를 오른쪽으로 한 칸 옮김 (커서가 문장의 맨 뒤이면 .. 2023. 7. 13.
3. 배열 - 인덱싱 테이블 이용하여 시간복잡도 줄이기 문제 주어진 길이 N의 int배열 arr에서 합이 100인 서로 다른 위치의 두 원소가 존재하면 1을, 존재하지 않으면 0을 반환하는 함수 func2(int arr[], int N)을 작성하라. arr의 각 수는 0 이상 100 이하이고 N은 1000 이하이다. func2({1,52,48}, 3)=1, func2({50,42},2} = 0, func2({4,13,63,87},4) =1 풀이 배열의 인덱스별로 값들을 카운트하여 시간복잡도를 줄일 수 있음. O(N^2) -> O(N) 합이 100인 수가 있는지 찾는 문제 - 100칸의 배열을 만들고, 주어진 값들을 100에서 뺀 후, 해당 인덱스에 카운트, 만약 값이 1일 경우면 프로그램 종료됨. - 이중 반복을 사용해서 모든 원소값들을 더해서 100이 되는.. 2023. 7. 13.
[c++] 2. 기초 코드 작성 요령 2 문제 풀이 └ A+B (1000) └ 세수정렬 (2752) └ 윤년 (2753) └ 주사위 세 개 (2480) └ 윷놀이 (2490) └ 홀수 (2576) └ 대푯값2 (2587) └ 일곱 난쟁이 (2309) └ 숫자 (10093) └ 핸드폰 요금 (1267) └ 카드 역배치 (10804) └ 최댓값 (2562) Git-Hub 코드 https://github.com/intlabSeJun/c-plus-coding-test/tree/master/2.%20%EA%B8%B0%EC%B4%88%20%EC%BD%94%EB%93%9C%20%EC%9E%91%EC%84%B1%20%EC%9A%94%EB%A0%B9%20ll 알게 된 것 1. STL(Standard Template Library)에 대해서 알게됨 vector는.. 2023. 7. 13.
[c++] 1. 코드 작성 요령 1 - 문제 3 문제 3 * N이 제곱수이면 1을 반환하고 제곱수가 아니면 0을 반환하는 함수 func3(int N)을 작성하라. * N은 10억 이하의 자연수이다. * * 출력 예시 * func3(9) = 1, * func3(693953651) = 0, * func3(756580036) = 1 풀이 제곱수인지 판단하는 문제이므로, 제곱근의 존재 유무를 파악한다. 1. math.h의 sqrt() 함수 이용 2. sqrt()함수를 직접 구현 - 바빌로니아 법 알고리즘(https://s-realstory.tistory.com/17) └ 임의의 수의 제곱근에 빠르게 수렴하는 수열을 만들어 근사값을 구하는 방법. └ 수학적으로 이차방정식의 근을 근사하는 것과 같다고 함. where, x_n = 추정된 근사값, a = 제곱근을 .. 2023. 7. 12.
728x90