목록Problem Solving (49)
프로그래밍 공부
문제를 보자마자 딱 떠오른 아이디어가 입력할 때 최대 값이 있는 인덱스를 구하고 최대 값 인덱스를 지나치면 최대 값 인덱스 + 1부터 다시 탐색을 해서 최대 값 인덱스를 구해주고 이를 반복하는 아이디어를 생각했다. 근데 이렇게 구해보니 역순으로 탐색하면 함수를 사용 안 하고 풀 수 있을 거 같아서 알아보니 많은 분들이 역순으로 문제를 해결했다고 해서 역순으로도 풀어봤는데 역순으로 푸는 게 MAX값을 찾는 함수를 쓰지 않아서인지 효율이 더 좋았다. 참고로 답을 구하는 변수는 int형 범위를 초과할수 있으니 long 또는 long long자료형을 써야한다 1. 순서대로 탐색한 코드 #include #include #define INT long long using namespace std; INT Scan_M..
https://www.acmicpc.net/problem/2667 2667번: 단지번호붙이기 과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여 www.acmicpc.net 언어 : C++ 환경 : Visual Studio 2019 이 문제는 BFS나 DFS로 풀 수 있는 있는 문제입니다. 설명은 코드에 주석으로 달려있습니다. BFS 풀이 #include #include #include #include #include using namespace std; #define X first #define Y second int dx[4] = { 1,0,-1,0 }; // 아래..
문제 - https://www.acmicpc.net/problem/1786 1786번: 찾기 첫째 줄에, T 중간에 P가 몇 번 나타나는지를 나타내는 음이 아닌 정수를 출력한다. 둘째 줄에는 P가 나타나는 위치를 차례대로 공백으로 구분해 출력한다. 예컨대, T의 i~i+m-1번 문자와 P의 1~m www.acmicpc.net 문제자체는 KMP 알고리즘을 사용해서 푸는 문제이다 KMP 알고리즘에 대한 설명은 동빈나님 블로그에서 보는게 좋을꺼 같다 영상이 있어서 이해하기 편했다 동빈나님 블로그 - https://blog.naver.com/ndb796/221240660061 참고로 문제를 입력받을때 문자열이랑 패턴 둘다 띄워쓰기로 입력받아야한다 난 문자열만 공백입력을 받는줄알고 하루종일 맞왜틀을 외쳤다 코드 ..
www.acmicpc.net/problem/17496 17496번: 스타후르츠 1, 11, 21, 31, 41 일에 스타후르츠 씨앗을 심으면 됩니다. 51일에 심으면 61일에 수확이 가능한데 여름은 60일까지 이므로 61일에는 수확할 수 없습니다. 따라서 총 5 * 300 = 1500개의 스타후르츠를 수확 www.acmicpc.net 1 2 3 4 5 6 7 8 9 #include using namespace std; int main() { int n, t, c, p; cin >> n >> t >> c >> p; cout
www.acmicpc.net/problem/17478 17478번: 재귀함수가 뭔가요? 평소에 질문을 잘 받아주기로 유명한 중앙대학교의 JH 교수님은 학생들로부터 재귀함수가 무엇인지에 대하여 많은 질문을 받아왔다. 매번 질문을 잘 받아주셨던 JH 교수님이지만 그는 중앙대 www.acmicpc.net 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 #include using namespace std; int cnt = 0; void print(int n) { for(int i = 0; i
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051#include #include #include #include using namespace std; int arr[101][101];bool vis[101][101];int dx[4] = { 1,0,-1,0 };int dy[4] = { 0,1,0,-1 }; int main() { ios::sync_with_stdio(0); cin.tie(0); int t; cin >> t; for (int i = 0; i > m >> n >> k; for (int reset = 0; reset > y; if(x