목록전체 글 (591)
어흥
문제 링크: https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWvQZmdKUoEDFASy SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 1. 주의할 점 - 브루트포스는 무조건 시간초과다. 쓸 생각 하지 말자 - BFS로 접근해보자 2. 구현 - 한 Node로 부터 시작해서 연결된 다른 Node들을 자신과 다른 색으로 칠한다 - 색을 칠하려고 할 때, 이미 자신과 같은 색을 지닌 경우 -> No - 모든 Node를 칠했으며, 도중에 불가능한 케이스로 판명되지 않았을 경우 -> Yes import java.io.Buffer..
문제 링크: https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWxQ310aOlQDFAWL SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 1. 주의할 점 - 브루트포스로 구현해도 경우의수는 10^6이여서 이외의 계산을 모두 처리한다 해도 8초 안에 해결된다 - 구간의 시작과 끝부분을 왜 주었는지 생각해보자 - 총 햄스터 마리수가 같을 경우, 사전순으로 앞에 오는것을 출력해야 한다. 2. 구현 - 구간의 끝부분을 기준으로 내림차순으로 정렬하자. 만약 같다면, 시작구간의 내림차순으로 정렬 (이 방식으로 하면 알아서 사전순으로..
문제 링크: https://codeforces.com/contest/1305/problem/C Problem - C - Codeforces codeforces.com 1. 주의할 점 - N의 범위가 20만이므로 N^2으로는 TLE가 발생한다. - M의 범위가 1000이하라는 사실에 유의한다 2. 구현 - 입력으로 받은 수 An % M의 값이 이미 존재하는 경우, 파이값은 무조건 0이다 #include #include #include using namespace std; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int test, num, mod, tt; cin >> num >> mod; vector v; bo..
문제 링크: https://codeforces.com/contest/1305/problem/B Problem - B - Codeforces codeforces.com 1. 주의할점 - 첫번째 output의 답으로는 0혹은 1밖에 나오지 않는다 2. 구현 - Stack을 이용 or DoublePointer 이용 #include #include #include #include using namespace std; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); string str; cin >> str; vector v; int l = 0, r = str.size() - 1; while (l < r) { while (1..
문제 링크: https://codeforces.com/contest/1305/problem/A Problem - A - Codeforces codeforces.com 1. 주의할 점 - 테스트케이스마다 각 vector을 초기화시켜준다 2. 구현 - 2개의 vector를 sort한 이후, 순서대로 더해주면 겹치는 값이 생기지 않는다. #include #include #include using namespace std; int main() { int test, tt, num; cin >> test; for (int t = 0; t > num; vector brace; vector neck; for (int i = 0; i > tt; nec..
문제 링크: https://www.acmicpc.net/problem/2186 2186번: 문자판 첫째 줄에 N(1 ≤ N ≤ 100), M(1 ≤ M ≤ 100), K(1 ≤ K ≤ 5)가 주어진다. 다음 N개의 줄에는 M개의 알파벳 대문자가 주어지는데, 이는 N×M 크기의 문자판을 나타낸다. 다음 줄에는 1자 이상 80자 이하의 영단어가 주어진다. 모든 문자들은 알파벳 대문자이며, 공백 없이 주어진다. www.acmicpc.net 1. 주의할점 - Row와 Col의 범위가 1~100이다 - 시간제한: 2초 결론 : DFS만 사용할 경우 TLE가 날 확률이 크다 -> 메모라이즈 이용 2. 구현 - dp배열 구성: y,x,몇번째 글자로 방문했는지(idx) 용도: 메모라이즈 - arr배열의 원소가 찾고자 ..
문제 링크: https://www.acmicpc.net/problem/10830 10830번: 행렬 제곱 크기가 N*N인 행렬 A가 주어진다. 이때, A의 B제곱을 구하는 프로그램을 작성하시오. 수가 매우 커질 수 있으니, A^B의 각 원소를 1,000으로 나눈 나머지를 출력한다. www.acmicpc.net 1. 주의할 점 - B가 최대 1000억까지 증가할 수 있다(단순 연산만 해도 100초) - 시간 제한: 1초 - 행렬의 원소는 매 계산마다 MOD 1000 한 결과를 보유한다 2. 해결법 - B를 logB만큼 줄여서 1초내에 연산을 끝내도록 한다 3. 함수 기능 - mul 함수: 2차행렬 X 2차행렬을 위한 함수 - pow 함수: v^B 의 결과를 돌려준다 #define MOD 1000 #incl..