💡 Problem Solving
[프로그래머스] 체육복 [C++]
1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/42862 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2. 풀이 그리디 문제이다. 체육복을 빌려줄 수 있으면 즉시 빌려준다. 그리고 여전히 체육복을 빌리지 못한 학생의 수를 세어서 전체 학생수에서 제외시켜준다. 3. 코드 #include #include #include #include using namespace std; int solution(int n, vector lost, vector reserve) { // 잃어버린 학생과 여벌을..
[백준 - 1541] 잃어버린 괄호 [C++]
1. 문제 https://www.acmicpc.net/problem/1541 1541번: 잃어버린 괄호 첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다 www.acmicpc.net 2. 풀이 첫 번째 '-' 연산자가 나타날 때까지는 모든 숫자들을 더하고, 첫 번째 '-' 연산자가 나타난 이후의 모든 숫자들은 빼주면 된다. 3. 코드 #include #include #include using namespace std; string expression; string number; int answer; bool isNegative = false; // 1541 /..
[백준 - 15829] Hashing [C++]
1. 문제 https://www.acmicpc.net/problem/15829 15829번: Hashing APC에 온 것을 환영한다. 만약 여러분이 학교에서 자료구조를 수강했다면 해시 함수에 대해 배웠을 것이다. 해시 함수란 임의의 길이의 입력을 받아서 고정된 길이의 출력을 내보내는 함수로 정 www.acmicpc.net 2. 풀이 NOTE - ans에서 곱할때 a와 r^i를 곱할때 int 범위를 벗어날 수 있으므로 long long int로 해주어야한다. 나머지 연산의 성질도 알고있으면 좋다.. - (A+B)%M = (A%M + B%M) % M - (AXB)%M = (A%M X B%M) % M - (A-B)%M = (A%M - B%M + M) % M ← 안 쪽에 + M을 해줘야 음수가 안 나오게 됨...
[백준 - 13335] 트럭 [C++]
1. 문제 https://www.acmicpc.net/problem/13335 13335번: 트럭 입력 데이터는 표준입력을 사용한다. 입력은 두 줄로 이루어진다. 입력의 첫 번째 줄에는 세 개의 정수 n (1 ≤ n ≤ 1,000) , w (1 ≤ w ≤ 100) and L (10 ≤ L ≤ 1,000)이 주어지는데, n은 다리를 건너는 트 www.acmicpc.net 2. 풀이 문제에 주어진대로 시뮬레이션하면 되는 문제이다. 1. 트럭을 다리에 진입시킬 수 있으면 진입시킨다. 2. 다리에서 트럭을 한 칸씩 이동시킨다. 1 - 2를 반복한 후, 오른쪽 땅에 남아있는 트럭이 없으면 다리의 트럭들을 왼쪽 땅으로 옮겨준다.. 3. 코드 #include #include #include using namespac..
[백준 - 20040] 사이클 게임 [C++]
1. 문제 https://www.acmicpc.net/problem/20040 20040번: 사이클 게임 사이클 게임은 두 명의 플레이어가 차례대로 돌아가며 진행하는 게임으로, 선 플레이어가 홀수 번째 차례를, 후 플레이어가 짝수 번째 차례를 진행한다. 게임 시작 시 0 부터 n − 1 까지 고유한 www.acmicpc.net 2. 풀이 n개의 점이 있고 m개의 간선 정보가 주어질 때, 몇 번째 간선을 연결했을 때, 사이클이 생기는 지 파악하는 문제이다. 방법) 1. 입력된 간선들을 연결할 때마다 DFS를 이용해 정점들에 대해 사이클 여부를 판별해보기 m; for(int i=0; i a >> b; if(ans == -1) { // 정답을 아직 못 찾았다면.. if(find(a) == find(b)) an..
[백준 - 23247] Ten [C++]
1. 문제 https://www.acmicpc.net/problem/23247 23247번: Ten A real estate company IC is managing a rectangular section of land. The section is divided into $mn$ segments in $m \times n$ matrix shape, where the number of rows and that of columns are $m$ and $n$, respectively. Each segment has its own price as a posi www.acmicpc.net 2. 풀이 사각형의 양 끝 점을 잡아서 사각형의 숫자들을 다 더하는 것을 반복하는 방법을 떠올리는 것이 가장 쉽다. 그러나 ..