본문 바로가기

전체 글

(118)
백준 2493 : 탑 c++ https://www.acmicpc.net/problem/2493 2493번: 탑 첫째 줄에 탑의 수를 나타내는 정수 N이 주어진다. N은 1 이상 500,000 이하이다. 둘째 줄에는 N개의 탑들의 높이가 직선상에 놓인 순서대로 하나의 빈칸을 사이에 두고 주어진다. 탑들의 높이는 1 www.acmicpc.net 구글 참조 해서 풀었다 - stack은 너무 어렵다 #include #include #include using namespace std; int main() { int num; scanf("%d", &num); int count = 0; stack s; pair p; int input; while (count < num) { scanf("%d", &input); p = make_pair(coun..
백준 2258 : 정육점 c++ https://www.acmicpc.net/problem/2258 2258번: 정육점 첫째 줄에 두 정수 N(1≤N≤100,000), M(1≤M≤2,147,483,647)이 주어진다. N은 덩어리의 개수를 의미하고, M은 은혜가 필요한 고기의 양이다. 다음 N개의 줄에는 각 고기 덩어리의 무게와 가격을 나타내는 www.acmicpc.net 고려해야될 점 1. 같은 가격인 애들이 여러개 주어졌을때를 꼭 생각해야 된다. ex) 3원짜리 고기 3g 5g vs 5원짜리 고기 10g 위의 경우의 5원짜리를 골라야 된다. 이것만 신경쓰면 쉽다 2. 가격이 싼순, 동일할때는 무게 무거운 순으로 정렬 3. 아직 합친무게가 원하는 정도가 아닌데, 동일 무게가 있으면 추가로 구매해야된다!! if (before == mea..
백준 1461 : 도서관 C++ https://www.acmicpc.net/problem/1461 1461번: 도서관 첫째 줄에 책의 개수 N과, 세준이가 한 번에 들 수 있는 책의 개수 M이 주어진다. 둘째 줄에는 책의 위치가 주어진다. N은 10,000보다 작거나 같은 자연수이고, M은 10,000보다 작거나 같다. 책의 위치 www.acmicpc.net 풀이 1. 일단 당연히 음수 쪽이랑, 양수쪽이랑 분리 2. m 개씩 멀리서부터 한 그룹으로 묶기 -> 묶으면서 그 그룹의 최대값 저장해두기 3. 가장 먼 그룹 제외하고 answer += 각 그룹의 최대값 *2 4. answer += 가장 먼 그룹의 최댓값 #include #include #include using namespace std; int n, m; int answer = ..
백준 8980 : 택배 C++ https://www.acmicpc.net/problem/8980 8980번: 택배 입력의 첫 줄은 마을 수 N과 트럭의 용량 C가 빈칸을 사이에 두고 주어진다. N은 2이상 2,000이하 정수이고, C는 1이상 10,000이하 정수이다. 다음 줄에, 보내는 박스 정보의 개수 M이 주어진다. M은 1이 www.acmicpc.net 원래 보내는곳 순으로 정렬한 후 queue를 활용한 시뮬레이션으로 돌리려 했지만, 자꾸 틀려서 다른 분 풀이를 참고했다. 풀이 1. 우선 일거리들을 도착 빠른 순으로 정렬 2. 출발지부터 도착지 - 1 까지 잔여용량이 가장 적은 곳 찾기 3. 실을 박스의 수 정하기 -> 용량초과일 수도 있으니 4. 출발지부터 도착지 - 1 까지 실을 박수의 수만큼 잔여용량을 줄여주기 #incl..
백준 1507 : 궁금한 민호 C++ https://www.acmicpc.net/problem/1507 1507번: 궁금한 민호 첫째 줄에 도시의 개수 N(1 ≤ N ≤ 20)이 주어진다. 둘째 줄부터 N개의 줄에 각각의 도시 사이에 이동하는데 필요한 시간 (≤ 10,000)이 주어진다. A에서 B로 가는 시간과 B에서 A로 가는 시간은 같다. www.acmicpc.net ※ 플로이드 와샬 활용 간단 정리 -> 모든 노드끼리의 가능한 최단거리를 구하는 것임. 1) 현재 노드들 사이에 연결된 다리들을 이용해 노드간 거리 초기화 2) 기본적으로 노드를 3개 찝어서 활용 시작노드, 도착노드, 거쳐갈 노드 3) min( 시작노드 -> 도착노드, 시작노드 ->거쳐갈 노드 + 거쳐갈노드 -> 도착노드) 풀이 1. 이놈은 이미 플로이드 와샬이 적용되어 ..
백준 1946 : 신입사원 C++ https://www.acmicpc.net/problem/1946 1946번: 신입 사원 첫째 줄에는 테스트 케이스의 개수 T(1 ≤ T ≤ 20)가 주어진다. 각 테스트 케이스의 첫째 줄에 지원자의 숫자 N(1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개 줄에는 각각의 지원자의 서류심사 성 www.acmicpc.net 풀이 1. 점수가 아니라 순위를 입력 받는거니까 조심 2. 서류 순위 순으로 정렬 3. 서류 1등은 당연히 뽑는거니까 cnt = 1로 초기화하고, 루프 4.면접 점수가 서류 1등보다 높은놈을 찾아냄 -> 이제 이놈의 면접점수보다 높은놈을 이어서 찾아서 골라내면 됨 #include #include #include using namespace std; bool cmp(paira,..
백준 1700 : 멀티탭 스케줄링 C++ https://www.acmicpc.net/problem/1700 1700번: 멀티탭 스케줄링 기숙사에서 살고 있는 준규는 한 개의 멀티탭을 이용하고 있다. 준규는 키보드, 헤어드라이기, 핸드폰 충전기, 디지털 카메라 충전기 등 여러 개의 전기용품을 사용하면서 어쩔 수 없이 각종 전 www.acmicpc.net 풀이 1. 새로운 전기용품을 충전하고 싶을때 3가지 경우가 있다 1) 이미 꽂혀 있는 경우 -> PASS 2) 꽂혀있지는 않지만, 멀티탭에 빈자리가 있음 -> 빈자리에다가 꼽는다 3) 자리가 없다 -> 이 경우가 코딩 필요 2. 현재 멀티탭에 꼽혀있는 전자제품 중에 가장 오랫동안 사용 안하는 걸 찾으면 된다. #include #include #include #include using namespa..
이분 탐색 나중에 기억하기 쉽게 최대한 심플하게 정리 1. 먼저 가능한 answer의 범위의 최대값과 최소값을 구한다. -> min, max 2. start 와 end를 초기화 + mid도 초기화 -> 당연히 처음에는 start = min, end = max -> mid = (min+max)/2 3. while문을 사용, 루프 조건은 while( start target : end = mid - 1 사용 예제 프로그래머스 입국 심사 https://programmers.co.kr/learn/courses/30/lessons/43238 코딩테스트 연습 - 입국심사 n명이 입국심사를 위해 줄을 서서 기다리고 있습니다. 각 입국심사대에 있는 심사관마다 심사하는데 걸리는 시간은 다릅니다. 처음에 모든 심사대는 비어있습니다. ..