본문 바로가기

분류 전체보기

(336)
백준 6588번 - 골드바흐 추측 (C++) https://www.acmicpc.net/problem/6588 에라토스테네스의 체를 이용해 소수르 판별하고, 이후 완전탐색을 진행했는데 시간초과가 났다. 그래서 두번돌면 안되는 것을 확인했고,  i, n - i 가 둘 다 소수인 것을 찾아야한 다는 것을 생각해내었다. #include #include #define MAX 1000000using namespace std;vector primeNum;bool* check = new bool[MAX];int main(){ cin.tie(NULL); ios_base::sync_with_stdio(0); for(int i = 0; i > tmp; while(tmp != 0){ bool flag = false; ..
프로그래머스 - 2018 KAKAO BLIND RECRUITMENT[3차] 파일명 정렬 https://school.programmers.co.kr/learn/courses/30/lessons/17686 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 주어진 문자열을 조건에 맞게 HEAD, NUMBER, TAIL을 분리하고 그에 따른 정렬을 사용하면 된다. 그런데 중요한 것은  HEAD 와 NUMBER가 같을 경우엔 TAIL이 달라도 순서를 그대로 진행시켜야한다. 같은 우선순위를 가진 경우를 컨트롤하는 것이 문제의 관건이다.  C++ Algorithm의 sort는 불안정 정렬이다. 만약 A B C D 에서 sort했을 때 A와 B의 우선순위가 같다..
백준 25214번 - 크림 파스타(C++) https://www.acmicpc.net/problem/25214최솟값을 저장해두고, 현재 들어오는 값에서 뺀 값과, 이전 정답 값을 비교해가며 정답을 출력하면 되는 문제이다. 아이디어를 떠올리는 것이 생각보다 어려웠던 문제#include #include using namespace std;int dp[200001];int main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); int N; cin >> N; int minValue = 1000000001; int maxValue = 0; for(int i = 0; i > value; maxValue = max(maxValue, value); minV..
Spring Boot - RestClient 로 공공데이터 얻어오기 .
백준 5911번 - 선물 (C++) https://www.acmicpc.net/problem/5911 이 문제는 N이 1000이고 딱 하나의 물건만 할인할 수 있기 때문에 브루트포스 방식으로 모든 선물을 할인해볼 수 있다. 그래서 N * N으로 해결할 수 있다. 먼저 모든 선물을 하나씩 할인해보고 그 이후 비용이 덜 드는 순서대로 정렬하고 가능할 때 까지 선물을 보내보면 된다. 그리고 만약 여기서 할인할 수 있는 선물이 여러개가 된다면 https://www.acmicpc.net/problem/25947 이 문제가 된다. 할인할 수 있는 선물이 한개가 아니기 때문에 N * N 으로풀 수 없는 여러개의 조합이 되어버려 브루트포스는 사용할 수 없고 이 문제에선 먼저 정렬을 통해 오름차로 만들고 이후 막혔을 때 할인을 계속 해보면서 정답을 찾아간..
프로그래머스 - 두 큐 합 같게 만들기 [2022 KAKAO TECH INTERNSHIP] https://school.programmers.co.kr/learn/courses/30/lessons/118667?language=cpp 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 처음 문제를 접했을 때 "최소비용", "최소거리" 등이 보이면 가장 먼저 생각나는 건 BFS, 다익스트라 등이다. 그래서 그렇게 생각했는데 방문체크를 할 수가 없었다. 그리고 이 문제의 의도는 Greedy 알고리즘이다. 두 합이 같아져야 하므로 언제나 큰 쪽에서 작은 쪽으로 pop하여 푸쉬하는 것이다. 그리고 최대까지 모두 돌았는데도 정답이 아니라면 이것은 방법이 없는 것으로..
백준 13904번 - 과제 (C++ / Greedy 알고리즘) https://www.acmicpc.net/problem/13904 문제를 접했을 때, 남은 일수를 먼저 할 것인가, 가장 많이 점수를 주는 과제를 수행할 것인지 잘 생각해야하는 문제이다. 가장 많은 점수를 주는 과제는 반드시 처리되어야 하지만, 최대한 나중에 밀어두고 처리해야한다. 왜냐하면  10 10005 1001 999 이라하자, 그렇다면 가장 많이 주는 과제는 10일이나 남았지만 먼저 처리해버리면 999를 주는 과제를 처리할 수 없다. 그러므로  TASK[DAYS] = DAY 일에 처리할 과제의 점수 가 들어있도록 하는 구현 방법을 사용해야한다. 이것을 떠올리기가 쉽지 않아 난이도가 있다. 보통 그리디 문제라하면 어떤 answer를 갱신하는 식으로 처리하기 때문이다. 그래서 그리디와 자주 함꼐하는..
백준 1990번 - 소수인팰린드롬 ( C++ / 에라토스테네스의 체) https://www.acmicpc.net/problem/1990 에라토스테네스의 체를 사용하면 간편하게 풀리는 문제...... 라고생각했으나 계속 시간초과가 나서 당황했다. 에라토스테네스의 체를 사용하는 방법은 두가지가 있다. 1. 범위 내의 소수 모두 찾아내기 int main(){bool check[10000]; for(int i = 2; i * i  2. 소수 판정하기bool Eratos(int N){ if(N  소수 판정 또한 O(sqrt(N)) 으로 판단해낼 수 있다. 그렇다면 이 문제는 b가 1억까지 있기 때문에 결국 1억 * 소수 판정이 들어가서 무조건 시간초과인데 어떻게 해야할까 생각이 들었는데, 소수인 팰린드롬은 천만 이후 나오지 않는다고 한다..!!! 그래서 천만까지만 보면..