본문 바로가기

반응형

Algorithm

(109)
[백준][C++] 1358 : 하키 https://www.acmicpc.net/problem/1358 1358번: 하키 첫째 줄에 수 W H X Y P가 주어진다. P는 선수의 수이다. W와 H는 100보다 작거나 같은 자연수이고, H는 짝수이다. X와 Y는 절댓값이 100보다 작거나 같은 정수이다. P는 최대 50인 자연수이다. 둘째 줄부 www.acmicpc.net - 문제 하키장 모양의 도형의 x,y 좌표가 주어질 때 하키장 내부에 하키 선수들이 몇명 있는지 구하는 문제다. - 해설 1. 중앙의 네모 안에 하키 선수가 있을 경우 2. 좌측 동그라미에 하키 선수가 있을 경우 3. 우측 동그라미에 하키 선수가 있을 경우 이렇게 세가지 경우를 구하면 된다. - 풀이 #include #include using namespace std; in..
[백준][C++] 2477 : 참외밭 https://www.acmicpc.net/problem/2477 2477번: 참외밭 첫 번째 줄에 1m2의 넓이에 자라는 참외의 개수를 나타내는 양의 정수 K (1 ≤ K ≤ 20)가 주어진다. 참외밭을 나타내는 육각형의 임의의 한 꼭짓점에서 출발하여 반시계방향으로 둘레를 돌면서 지 www.acmicpc.net - 문제 ㄱ-자 와 비슷한 모양인 밭에서 자랄 수 있는 참외의 수를 구하는 문제이다. - 해설 total을 통해 1,2,3,4(방향) 중에서 한번씩만 나온 것을 곱해주면 총 사각형의 면적을 구할 수 있고, small을 통해 1,2,3,4 중에서 두 번씩 나온 것들 중에서 사이에 작은 사각형을 만드는 길이들을 구해서 작은 사각형의 면적을 구해 빼주면 된다. 이후에 면적당 참외가 자라는 만큼 곱하면..
[백준][C++] 11478 : 서로 다른 부분 문자열의 개수 https://www.acmicpc.net/problem/11478 11478번: 서로 다른 부분 문자열의 개수 첫째 줄에 문자열 S가 주어진다. S는 알파벳 소문자로만 이루어져 있고, 길이는 1,000 이하이다. www.acmicpc.net - 문제 문자열이 주어지면 그 문자열의 부분 문자열 중에서 서로 다른 문자열의 개수를 구하는 문제다. - 해설 substr와 map를 이용해서 쉽게 풀 수 있다. - 풀이 #include #include #include using namespace std; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); string s; map m; cin >> s; for (int i = 0; i < s.size();..
[백준][C++] 1269 : 대칭 차집합 https://www.acmicpc.net/problem/1269 1269번: 대칭 차집합 첫째 줄에 집합 A의 원소의 개수와 집합 B의 원소의 개수가 빈 칸을 사이에 두고 주어진다. 둘째 줄에는 집합 A의 모든 원소가, 셋째 줄에는 집합 B의 모든 원소가 빈 칸을 사이에 두고 각각 주어 www.acmicpc.net - 문제 두 집합이 주어지면 두 집합의 차집합을 모두 더하는 문제다. - 해설 이건 map으로 풀어야 한다는 생각 없이 그냥 풀었다가 진짜 브론즈 문제인것 처럼 find를 이용해 차집합을 구했다. 다른 사람들이 푼 거 중에서 가장 잘 만들었고 내가 만약 map으로 풀었으면 이렇게 풀었을 것 같은 걸 같이 첨부하겠다. - 풀이 #include #include using namespace std..
[백준][C++] 1764 : 듣보잡 https://www.acmicpc.net/problem/1764 1764번: 듣보잡 첫째 줄에 듣도 못한 사람의 수 N, 보도 못한 사람의 수 M이 주어진다. 이어서 둘째 줄부터 N개의 줄에 걸쳐 듣도 못한 사람의 이름과, N+2째 줄부터 보도 못한 사람의 이름이 순서대로 주어진다. www.acmicpc.net - 문제 이름이 포함된 array가 두개 주어지면 둘 모두에 있는 이름을 출력한다. - 해설 map를 만들어서 두 개의 이름 집합에 대해서 ++해주면 2 이상인 이름이 듣도보도 못한 이름이 된다. - 풀이 #include #include #include #include using namespace std; #define fastio \ ios_base::sync_with_stdio(false);..
프로그래머스 베스트앨범 C++ 프로그래머스 : 베스트앨범 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr - 문제 노래 장르당 최대 두 개씩 play 수가 많은 것들의 번호를 반환하는 문제다. - 풀이 #include #include #include #include // #include using namespace std; bool cmp(pair a, pair b){ return a.second > b.second; } bool comp(pair a, pair b){ if(a.first == b.first){ return a.second.second < b.second.second; ..
프로그래머스 N개의 최소공배수 프로그래머스 : N개의 최소공배수 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr - 문제 무든 arr에 대한 최소공배수를 출력하는 문제다. - 풀이 #include #include #include using namespace std; int solution(vector arr) { int answer = *max_element(arr.begin(),arr.end()); bool b = false; while(!b){ b = true; for(auto a : arr){ if(answer % a != 0){ b = false; break; } } answer..
프로그래머스 구명보트 C++ 프로그래머스 : 구명보트 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr - 문제 한 구명보트에 최대 두명만 탈 수 있을 때 구명보트를 최소한으로 사용해서 모두 탈출할 수 있는 경우를 구하는 문제다. - 풀이 #include #include #include using namespace std; int solution(vector people, int limit) { int answer = 0, current = 0, idxF = 0, idxB = people.size() - 1; sort(people.begin(),people.end()); while(idxF

반응형