전체 글 115

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

[프로그래머스] 가장 가까운 같은 글자

문제설명 알고리즘 1. 알파벳과 그 인덱스를 map 에 저장한다 2. map에서 해당 key를 조회하고 있으면 그 value와 문자열을 순회하는 index값을 빼어 결과값에 저장 3. key가 없는 경우 결과값에 -1 저장, 그리고 map에 key값과 현재 index저장 코드 #include #include #include using namespace std; vector solution(string s) { vector answer; map m; for(int i=0; i< s.size(); i++){ char temp = s[i]; if(m.count(temp)){//해당 알파벳이 있으면 answer.push_back(i-m[temp]); //제일 가까운 위치 구해서 거리 저장 m[temp] = i;..

Algorithm 2023.02.24

[프로그래머스] 귤 고르기

문제설명 알고리즘 1. 귤의 크기 별 몇 개 존재하는 지 카운트 -> (key, value) 형태인 map이 가장 적절 2. MAP에 넣은 뒤, 귤의 갯수 기준으로 내림차순 정렬 3. 벡터로 변환하여 벡터 순회하여 k 개에서 최대 귤 수 부터 k 값 감소 시키기 & 결과 값 증가 코드 #include #include #include #include #include using namespace std; bool cmp (const pair &a, const pair &b){ if(a.second == b.second) return a.first > b.first; return a.second > b.second; } int solution(int k, vector tangerine) { int answer..

Algorithm 2023.02.22