본문 바로가기

CS(Computer Science)지식/[C++][코딩 테스트] 자료구조 및 알고리즘55

백준 11718번: 그대로 출력하기 (C++) https://www.acmicpc.net/problem/11718 해당 문제는 getline 메소드를 통해서 공백도 문자열로 입력 받아야한다. 또한 while문 조건문안에 getline을 선언하여 입력이 없을때 프로세스가 종료되게 만들어야한다. #include #include using namespace std; string s; int main() { while( getline(cin, s)) { cout 2024. 1. 31.
백준 23326번: 홍익 투어리스트 (C++) ttps://www.acmicpc.net/problem/23326 이 문제를 접근 할 때 map STL을 통해서 key값을 구역으로 두고 value값을 명소 여부인 0,1을 저장하려고 하였다. 하지만 이렇게 접근하면 실제로 시계 방향으로 이동하거나 시계 방향으로 최소 몇 칸 움직여야 하는지 출력하는 과정에서 map내부의 값을 다 돌아야 하므로 시간 복잡도가 최대 O(500,000*100,000)으로 초과하게된다. 그렇지만.. 풀이 방법이 떠오르지 않아서 아래와 같은 풀이로 시간 초과가 발생하였다. 아래 풀이는 참고하지 말자....! #include #include //#include using namespace std; map m; int main() { ios::sync_with_stdio(false).. 2024. 1. 31.
백준 21939번: 문제 추천 시스템 Version1 (C++) https://www.acmicpc.net/problem/21939 해당 문제의 핵심 접근 방법은 아래 두 가지와 같다. 해당 문제는 실제 번호에 해당하는 배열의 위치에 난이도를 넣어서 하나의 문제 번호만 존재하도록 관리한다. 위 배열을 참고해서 set 자료형을 배열로 선언하여 배열의 위치를 난이도로 하고 해당 배열에 문제 번호를 넣으면 문제 번호가 오름차순이 되기 때문에 문제에서 원하는 조건을 조금 더 쉽게 구현할 수 있다. 풀이는 아래와 같다. #include #include using namespace std; int probl[100'002]; set s[102]; int n,m; int main() { cin >> n; for(int i=0; i> p >> l ; probl[p]=l; s[l]... 2024. 1. 31.
백준 1202번: 보석 도둑(C++) https://www.acmicpc.net/problem/1202 해당 문제를 풀 때 가장 중요한 것은 어떤 조건에서 가장 이득을 보는지 생각해야 한다. 우선 쉽게 정답을 먼저 말하면 가장 가격이 비싼 보석을 가장 무게가 적은 가방에 넣는 과정만 생각하면 상덕이가 훔칠 수 있는 보석의 최대 가격을 구할 수 있다. 우선 보석의 무게와 가격이 중복될 수 있고 가방의 무게도 중복될 수 있으므로.. 중복을 고려한 자료구조를 사용 해야 되고 보석 같은 경우 가격에 따라서 정렬 해야지 가장 비싼 보석부터 가방에 넣어볼 수 있고, 가방 같은 경우도 가장 무게가 적은 가방에 넣는 과정을 진행해야 하므로 무게에 따른 정렬이 필요하다. 따라서 다음과 같이 코드를 작성 하였다. 헷갈렸던 부분을 하나 이야기 해보자면 보석의 .. 2024. 1. 31.