문제 풀이
-
[SWEA] 1954 달팽이 숫자문제 풀이 2020. 4. 22. 19:43
1954. 달팽이 숫자 풀이)쉬운 문제이다.숫자들을 for문을 이용해 배열에 저장한 뒤, 배열을 출력했다. 코드) 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455#include using namespace std; int arr[10][10]; int main() { int T = 0; //freopen("input (1).txt", "r", stdin); scanf("%d", &T); for (int test_case = 1; test_case
-
[SWEA] 1824 혁진이의 프로그램 검증문제 풀이 2020. 4. 21. 22:48
1824 혁진이의 프로그램 검증 풀이)dfs를 통해 탐색해준 문제이다. 주의할점은 ? 문자와 cycle 여부이다. 1. ? 문자일 경우, 4방향으로 바뀔 확률이 동일하니깐 4방향 모두 탐색해봄으로 해결했다. 2. sample_input의 2번 처럼, (sample 2) 2 6 5>--v. .^--_@ 탐색이 끝나지 않고 계속 돌아가는 상황이 생길 수 있다. -> cycle 생성 이는 bool visited[20][20][16][4] 4차원 배열을 통해 한 번 겪었던 상황이면 다시 겪지 않도록 해줬다. visited[r][c][mem][direction] == true? : r행 c열 번째 칸을 메모리에 mem 정수가 저장되어있고, 방향이 dir일때 방문했었다 라는 뜻. 코드) 123456789101112..
-
[SWEA] 2819번 격자판의 숫자 이어 붙이기문제 풀이 2020. 4. 20. 17:23
2819 격자판의 숫자 이어 붙이기 풀이)dfs를 이용해서 서로 다른 일곱 자리 수들을 구한 문제이다.숫자의 자릿수가 늘어날 때마다 *10씩 하는 게 귀찮아서아예 string으로 선언해 stoi()함수로 수를 쉽게 구했다. 첫번째 풀이에서 일곱 자리 수들의 개수를 bool visited[1000000]을 통해 확인해주었고,이는 메모리를 너무 잡아먹었다. 코드) 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556#include #include #include #include #include using namespace std; int arr[4][4];int check[10..
-
[SWEA] 3752번 가능한 시험 점수문제 풀이 2020. 4. 18. 22:24
3752 가능한 시험 점수 풀이)백준 2293 동전 문제와 비슷한 문제이다. bool visited[10001]변수를 두어, 점수들의 합 i이 나올 수 있을 경우 visited[i] = true로 바꿔줬다. (크기를 10001로 둔 이유? 배점의 최고값 100 * n의 최대값 100 = 10000이므로) 코드) 12345678910111213141516171819202122232425262728293031323334353637#include #include using namespace std; int n;int arr[100];bool visited[10001]; int main() { //freopen("sample_input.txt", "r", stdin); int T = 0; scanf("%d", ..
-
[SWEA] 1249번 보급로문제 풀이 2020. 4. 18. 21:20
1249 보급로 풀이)다익스트라를 이용한다면 쉽게 풀 수 있는 문제이다. 코드) 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758#include #include #include using namespace std; #define INF 999999999int n;int dy[4] = { -1,1,0,0 };int dx[4] = { 0,0,-1,1 };int map[100][100];int dist[100][100]; int Dijkstra() { for (int i = 0; i
-
[SWEA] 1244번 최대상금문제 풀이 2020. 4. 17. 21:34
1244 최대상금 풀이)교환할 수 있는 모든 경우를 확인해서 최대값을 찾았다. 입력값을 int형으로 받아 자릿수대로 배열에 저장해놓고,바꾼 다음 다시 원래대로 만들어 놓기 귀찮아서아예 입력값을 string으로 받았다string 입력값을 순서를 바꾼 뒤 stoi()함수를 통해 int형으로 바꿔 최대값인지 확인해줬다. 주의값이 큰 수가 제일 앞에 있어야 하므로자리를 바꿀 때, 뒤의 자리값이 클 경우에만 교환해줬다. 코드) 123456789101112131415161718192021222324252627282930313233343536373839404142#include #include #include #include #includeusing namespace std; string s;int n;int res..
-
[SWEA] 1859번 백만 장자 프로젝트문제 풀이 2020. 4. 17. 21:05
1859 백만 장자 프로젝트 문제는 불법 복사가 금지되어있어서 풀이만 쓰겠다. 풀이)일단, N일동안의 매매가를 배열에 저장해 둔다. 그리고 1. 처음 인덱스부터 마지막인덱스( 0 ~ n - 1 ) 값 중 가장 큰 값의 마지막 인덱스(i)를 찾는다.2. (0번째 인덱스 ~ i - 1)까지 이득을 구한다. 이득은 array[i] - 각 인덱스의 값 들의 합. 3. i + 1 부터 마지막 인덱스 n - 1까지 중 가장 큰 값의 마지막 인덱스(j)를 찾는다.4. (i+1 인덱스 ~ j)까지 이득을 구한다. 3, 4번을 현재 인덱스가 n - 1까지 계속 반복하면 된다. 예를 들어) N=6, 매매가 1,1,3,1,1,2일 때 계산 과정을 본다면 주의매매가의 최고값이 10,000이고, N은 1,000,000개까지 있..
-
[백준] 5373번 큐빙문제 풀이 2020. 4. 15. 22:39
5373 큐빙 문제루빅스 큐브는 삼차원 퍼즐이다. 보통 루빅스 큐브는 3×3×3개의 작은 정육면체로 이루어져 있다. 퍼즐을 풀려면 각 면에 있는 아홉 개의 작은 정육면체의 색이 동일해야 한다.큐브는 각 면을 양방향으로 90도 만큼 돌릴 수 있도록 만들어져 있다. 회전이 마친 이후에는, 다른 면을 돌릴 수 있다. 이렇게 큐브의 서로 다른 면을 돌리다 보면, 색을 섞을 수 있다.이 문제에서는 루빅스 큐브가 모두 풀린 상태에서 시작한다. 윗 면은 흰색, 아랫 면은 노란색, 앞 면은 빨간색, 뒷 면은 오렌지색, 왼쪽 면은 초록색, 오른쪽 면은 파란색이다.루빅스 큐브를 돌린 방법이 순서대로 주어진다. 이때, 모두 돌린 다음에 가장 윗 면의 색상을 구하는 프로그램을 작성하시오.위의 그림은 루빅스 큐브를 푼 그림이다..