Algorithm 15

[백준 6236] 용돈 관리

문제설명 https://www.acmicpc.net/problem/6236 6236번: 용돈 관리 현우는 용돈을 효율적으로 활용하기 위해 계획을 짜기로 하였다. 현우는 앞으로 N일 동안 자신이 사용할 금액을 계산하였고, 돈을 펑펑 쓰지 않기 위해 정확히 M번만 통장에서 돈을 빼서 쓰기로 www.acmicpc.net 알고리즘 1. 사용할 수 있는 돈의 최소는 i일 동안 사용할 금액 중에 가장 큰 값, 그리고 돈의 최대는 모든 사용할 돈의 합이다 2. 해당 두 값으로 이분탐색을 진행한다 3. 이분탐색을 할 때, 돈 인출 수를 세어보고 더 많이 인출해야하는 경우 돈을 키우고 그렇지 않은 경우 금액을 줄인다 코드 import sys def Input_Data(): readl = sys.stdin.readline..

Algorithm 2024.01.31

[백준 3055] 탈출

문제설명 https://www.acmicpc.net/problem/3055 3055번: 탈출 사악한 암흑의 군주 이민혁은 드디어 마법 구슬을 손에 넣었고, 그 능력을 실험해보기 위해 근처의 티떱숲에 홍수를 일으키려고 한다. 이 숲에는 고슴도치가 한 마리 살고 있다. 고슴도치는 제 www.acmicpc.net 알고리즘 1. 그래프 정보 입력 2. 고슴도치 위치, 홍수 지역 정보 저장 3. 홍수 정보를 통해 1분당 홍수 그래프에 반영 4. 고슴도치 이동 반복 코드 import sys from collections import deque def Input_Data(): R, C = map(int,readl().split()) map_forest = [[0] + list(readl()[:-1]) + [0] if 1

Algorithm 2024.01.31

[백준 2531] 회전 초밥

문제설명 https://www.acmicpc.net/problem/2531 2531번: 회전 초밥 첫 번째 줄에는 회전 초밥 벨트에 놓인 접시의 수 N, 초밥의 가짓수 d, 연속해서 먹는 접시의 수 k, 쿠폰 번호 c가 각각 하나의 빈 칸을 사이에 두고 주어진다. 단, 2 ≤ N ≤ 30,000, 2 ≤ d ≤ 3,000, 2 ≤ www.acmicpc.net 알고리즘 이번 문제는 단순하게 반복문으로 결과를 구해낼 수 있다 하지만 시간 제약이 있기 때문에 sliding window를 사용해야한다 k개를 확인해서 초밥의 갯수를 세기때문에 1칸씩 옮겨가며 연산한다 이때 모든 초밥을 다 다시세면 반드시 시간초과가 발생하기 때문에, 새로 추가되는 초밥만 세고 먹을 수 없는 초밥은 빼는 것이 문제의 해결 방식이다 ..

Algorithm 2024.01.28

[백준 1920] 수 찾기

문제설명 https://www.acmicpc.net/problem/1920 1920번: 수 찾기 첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들 www.acmicpc.net 코드 #include #include #include using namespace std; int n, m, temp; vector num, finds; void binarySearch(int key){ int start=0, end=num.size()-1; while(start temp; num.push_back(temp); } cin >..

Algorithm 2023.05.17

[프로그래머스] 추억 점수

문제설명 https://school.programmers.co.kr/learn/courses/30/lessons/176963 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 알고리즘 코드 #include #include #include using namespace std; vector solution(vector name, vector yearning, vector photo) { vector answer; map m; for(int i=0; i

Algorithm 2023.05.12

[프로그래머스] 뒤에 있는 큰 수 찾기

문제설명 알고리즘 1. 수를 stack에 입력 받는다 first는 숫자, second는 인덱스 값이 된다 2. stack이 비어있지 않다면, 맨 위의값을 꺼내어 현재 숫자와 비교하여 크거나 같으면 반복문을 빠져나가고 그렇지 않으면 stack에서 뺀다 3. 반복문을 나온 상태이면 현재 수 값과 인덱스를 저장한다 코드 #include #include #include using namespace std; vector solution(vector numbers) { vector answer(numbers.size(), -1); stack st; for(int i =0 ; i< numbers.size() ; i++){ while(!st.empty()){ pair top = st.top(); if(top.first..

Algorithm 2023.03.05