반응형
반응형
https://www.acmicpc.net/problem/5430 5430번: AC 각 테스트 케이스에 대해서, 입력으로 주어진 정수 배열에 함수를 수행한 결과를 출력한다. 만약, 에러가 발생한 경우에는 error를 출력한다. www.acmicpc.net 난이도: solved.ac 골드 5 일단 수를 배열에 저장시키고, front와 rear라는 커서를 둬서 R이면 front와 rear의 위치를 서로 바꾸고 D면 front를 한 칸 이동시키는 식으로 풀었다 그리고 front와 rear 사이에 수가 없는데 D를 하면 error를 출력하도록 해주었다 수를 배열에 담을 때는 '['와 ']'를 따로 입력받고, 수는 콤마(,)로 구분해서 입력받았다 #define _CRT_SECURE_NO_WARNINGS #incl..
https://www.acmicpc.net/problem/1764 1764번: 듣보잡 첫째 줄에 듣도 못한 사람의 수 N, 보도 못한 사람의 수 M이 주어진다. 이어서 둘째 줄부터 N개의 줄에 걸쳐 듣도 못한 사람의 이름과, N+2째 줄부터 보도 못한 사람의 이름이 순서대로 주어진다. www.acmicpc.net 일단 듣도 못한 사람 (hear)과 보도 못한 사람 (see)를 입력받고 각각 정렬시킨다 그 후 merge sort에서 merge할 때처럼 정렬된 두 개의 배열에 커서를 두고 각각의 커서가 가리키는 같으면 배열 ans에 넣어주었다. 커서가 가리키는 이름 서로 다를 때는 사전순으로 더 앞선 쪽의 커서를 1칸 이동시킨다. #include using namespace std; int main() { ..
https://www.acmicpc.net/problem/1932 1932번: 정수 삼각형 첫째 줄에 삼각형의 크기 n(1 ≤ n ≤ 500)이 주어지고, 둘째 줄부터 n+1번째 줄까지 정수 삼각형이 주어진다. www.acmicpc.net 난이도: solved.ac 실버 1 알고리즘 분류 다이나믹 프로그래밍 (dp) 접근 방법 맨 윗 칸부터 아래로 내려가면서 선택한 수의 합이 최대가 되어야 한다 arr[i][j]를 선택할 때, arr[i-1][j-1] 와 arr[i-1][j]를 선택했을 때 중 합이 더 큰 걸 골라야 한다 #include using namespace std; int previ[501], pres[501]; int main() { ios::sync_with_stdio(0); cin.tie(..
https://www.acmicpc.net/problem/1620 1620번: 나는야 포켓몬 마스터 이다솜 첫째 줄에는 도감에 수록되어 있는 포켓몬의 개수 N이랑 내가 맞춰야 하는 문제의 개수 M이 주어져. N과 M은 1보다 크거나 같고, 100,000보다 작거나 같은 자연수인데, 자연수가 뭔지는 알지? 모르면 www.acmicpc.net C++에 구현된 unordered_map STL을 이용하면 쉽다. 포켓몬 번호를 입력받고 포켓몬 이름을 출력해야 할 때는 unordered_map에서 index로 가져오는 것보다 배열에 따로 저장해 거기에 있는 index로 바로 출력하는 게 더 빨라서 name이라는 배열을 따로 만들었다. #include using namespace std; unordered_map P..
https://www.acmicpc.net/problem/2630 2630번: 색종이 만들기 첫째 줄에는 전체 종이의 한 변의 길이 N이 주어져 있다. N은 2, 4, 8, 16, 32, 64, 128 중 하나이다. 색종이의 각 가로줄의 정사각형칸들의 색이 윗줄부터 차례로 둘째 줄부터 마지막 줄까지 주어진다. www.acmicpc.net 난이도: solved.ac 실버 2 알고리즘 분류 재귀, 분할 정복 (Devide and Conquer) 구현 방법 색종이의 맨 왼쪽 위 index부터 시작해 색종이의 크기만큼 arr[i][j]를 탐색하다가 맨 왼쪽 위 원소와 다르면 색종이를 4등분 한다. 잘려진 색종이의 한 변의 길이는 현재 색종이 한 변의 길이의 절반이다. 4등분할 때 잘려진 각 색종이의 왼쪽 위 좌..
https://www.acmicpc.net/problem/17615 17615번: 볼 모으기 첫 번째 줄에는 볼의 총 개수 N이 주어진다. (1 ≤ N ≤ 500,000) 다음 줄에는 볼의 색깔을 나타내는 문자 R(빨간색 볼) 또는 B(파란색 볼)가 공백 없이 주어진다. 문자열에는 R 또는 B 중 한 종류만 주 www.acmicpc.net 난이도: solved.ac 실버 1 접근 방법 결론: R과 B를 각각 맨 앞으로 옮기는 경우, 맨 뒤로 옮기는 경우 이렇게 총 4가지 경우의 수를 구해야 한다. 아래의 경우를 보자. RRRBBBRRBBRBRR R의 총 개수는 8개이고 맨 앞에 R이 3개 연속으로 있고 맨 뒤에는 R이 2개 연속으로 있다. R을 모두 맨 앞으로 몰아넣으려면 뒤에 있는 5개(전체 R의 개수..