반응형 PS 문제 풀이/SWEA75 [SWEA] 3408 세가지 합 구하기 출처: SWEA Input 3 1 10 1001 Output #1 1 1 2 #2 55 100 110 #3 501501 1002001 1003002 #include using namespace std; long int N, S[3]; int main() { int testCase; cin >> testCase; for (int tc = 1; tc 2021. 2. 24. [SWEA] 3456 직사각형 길이 찾기 출처: SWEA Input 3 1 1 2 4 3 4 5 5 5 Output #1 2 #2 3 #3 5 직사각형 한 변을 기준으로 자기자신을 제외하고 동일한 값이 있는지 확인 모든 변이 일치하는 경우가 있으므로 answer 초기값을 임의의 한 변과 동일하게 처리 #include using namespace std; int side[3], answer; int main() { int testCase; cin >> testCase; for (int tc = 1; tc > side[i]; } bool isUnique; answer = side[0]; for (int pivot = 0; pivot < 3; pivot++) { isUnique = true; for (int target = 0; target < 3;.. 2021. 2. 24. [SWEA] 3431 준환이의 운동관리 출처: SWEA Input 3 300 400 240 300 400 350 300 400 480 Output #1 60 #2 0 #3 -1 #include using namespace std; int X, L, U, answer; int main() { int testCase; cin >> testCase; for (int tc = 1; tc > L >> U >> X; if (X U) answer = -1; else answer = 0; cout 2021. 2. 24. [SWEA] 1540 좋은 문자열 출처: SWEA Input 7 ZGBG X EE AAB AABA AABB BCBABCC Output GOOD GOOD GOOD GOOD GOOD BAD BAD ① 각 문자열로 D-쌍 구합니다. 쌍은 두 문자로 구성되어 있으므로 left, right 변수 이용 ② D-쌍에서 D-유일 여부를 판단합니다. 쌍과 마찬가지로 유일성 여부를 판단하기 위해서는 left와 right 변수 활용 #include using namespace std; string str; bool isUnique(int left, int right, int distance) { // 서로 같은 문자열이 있는지 확인 int l = 0, r; while (true) { r = l + distance; // D_pair[]의 모든 원소를 찾은 .. 2021. 2. 24. [SWEA] 3499 퍼펙트 셔플 출처: SWEA Input 3 6 A B C D E F 4 JACK QUEEN KING ACE 5 ALAKIR ALEXSTRASZA DR-BOOM LORD-JARAXXUS AVIANA Output #1 A D B E C F #2 JACK KING QUEEN ACE #3 ALAKIR LORD-JARAXXUS ALEXSTRASZA AVIANA DR-BOOM 교대로 섞이는 규칙을 활용해서 수식을 세웁니다. #include using namespace std; char card[1001][81]; int main() { int testCase; cin >> testCase; for (int tc = 1; tc > N; for (int i = 0; i > card[i]; // 정답 출력.. 2021. 2. 24. [SWEA] 3750 Digit sum 출처: SWEA Input 3 5 108 588432 Output #1 5 #2 9 #3 3 #include using namespace std; unsigned long int f(unsigned long int n) { // 10 미만인 경우 if (n 9) { sum += n % 10; n = n / 10; } // 각 자릿수의 합 재귀처리 return f(sum + n); } int main() { int testCase; cin >> testCase; for (int tc = 1; tc 2021. 2. 24. [SWEA] 9092 마라톤 출처: SWEA Input 2 5 2 0 0 8 3 1 1 10 -5 2 2 5 3 0 0 8 3 1 1 10 -5 2 2 Output #1 4 #2 4 ▶ dp[cur][k] = min(dp[cur][k], solve(next, k - i) + distance(cur, next)); dp[현재위치][남은 점프 수] → 가능한 건너뛰기를 고려해서 갈수 있는 칸으로 뛰어본다. #include #include #include #define MAX 123456789 using namespace std; int dp[501][501]; vector v; int N, K, x, y; int abs(int x) { return x >= 0 ? x : -x; } int min(int x, int y) { return.. 2021. 2. 24. [SWEA] 5684 운동 출처: SWEA Input 1 3 4 1 2 1 3 2 1 1 3 5 2 3 2 Output #1 3 N이 크지 않아 DFS 혹은 BFS로도 풀이 가능 다익스트라 알고리즘 이용 #include #include #include #include #define SIZE 401 #define INF 987654321 using namespace std; struct Pair { int v, w; Pair(int v, int w) : v(v), w(w) {} }; struct minHeap { bool operator()(Pair p1, Pair p2) { return p1.w > p2.w; } }; int n, m, answer; int dist[SIZE]; vector graph[SIZE]; int dijks.. 2021. 2. 24. [SWEA] 8825 홀수 중간값 피라미드2 출처: SWEA Input 2 4 1 6 3 7 4 5 2 2 3 1 2 Output #1 4 #2 2 #include #include using namespace std; int n, arr[200000]; bool cmp(int x, int mid) { return x >= mid; } bool judgeUpDown(int mid) { for (register int i = 1; i > testCase; for (int tc = 1; tc > n; for (int i = 1; i > arr[i]; int left = 1, right = 2 * n - 1, answer = 1; while (left > 1; if (judgeUpDown(mid)) { answer = mid; left = mid + 1;.. 2021. 2. 24. [SWEA] 5642 합 출처: SWEA Input 1 5 1 3 -8 18 -8 Output #1 18 모든 원소가 음수인 경우 주의해야 한다. Input 1 5 -5 -4 -3 -2 -1 Output #1 -1 ※ 유사문제 풀이: [BOJ] 1912 연속합 [BOJ] 백준 1912 연속합 출처: https://www.acmicpc.net/problem/1912 Input 10 10 -4 3 1 5 6 -35 12 21 -1 Output 3 배열의 연속된 부분합을 구하는 문제입니다. ① 중첩 for문을 이용하면 시간초과. ② 모든 원소가 음수일 때,.. zoosso.tistory.com #include using namespace std; int arr[100000]; #define MIN -1001 int main() { i.. 2021. 2. 24. 이전 1 ··· 4 5 6 7 8 다음 반응형