본문 바로가기

Programming/Algorithm 193

swe 1211 Ladder2 1. 처음 설계의 중요성2. 문제 이해의 중요성 처음 문제가 잘 못되어 있어서 설계를 잘 못 해서 코드를 리팩토링 하려고 하니, 시간이 너무 많이 걸렸다. 어려운 문제가 아닌데, 문제를 잘 못 이해했으면, 처음부터 설계를 새로 하는 것이 좋습니다... 문제를 정독하고 처음 설계를 완벽하게 하는 것이 중요합니다. /*1210 Ladder1 1540 시작합니다. */ #include #include #include using namespace std; #define SIZE 100 // 100 struct point {int x, y, cnt;}que[SIZE*SIZE], start_store[SIZE]; int x, y, nx, ny;int dx[] = { 0,0,-1 }; // 동 서 남int dy[] .. 2018. 3. 28.
swe 1219 Ladder1 1. queue 를 연습하였습니다.2. 재밌네요. /*1210 Ladder1 1540 시작합니다. */ #include #include using namespace std; #define SIZE 100 // 100 struct point {int x, y;}que[SIZE*SIZE]; int x, y, nx, ny;int dx[] = { 0,0,-1 }; // 동 서 북int dy[] = { 1,-1,0 };int map[SIZE][SIZE];int visit[SIZE][SIZE];int ans;int front, rear; void problemIn() {for (int i = 0; i > map[i][j];i.. 2018. 3. 28.
swe 1209 Sum 1. 20분컷2. 기본다지기 문제3. 문제에 나온대로 구현하면 됩니다.for문과 if문만 사용하면 됩니다. /*1520 시작합니다.1209 Sum 문제입니다. 저렇게 만들면 되겠습니다. 그리고 검사를 할때 테두리만 검사를 진행하면 됩니다.*/ #include #include using namespace std;#define SIZE 100 // 101 int map[SIZE + 1][SIZE + 1];int maxVal;int sum;int leftDown; void problemIn() {for (int i = 0; i > map[i][j];}}} void solve() {// 오른쪽for (int i = 0; .. 2018. 3. 28.
swe 1208 Flatten 1. 반복문 이용해서 풀이하는 것.2. 인덱스는 어떻게 처리할 것인가.3. 순서만 꼼꼼하게 보면 되겠습니다. /*1208 Flatten문제 시작하도록 하겠습니다. 1440이제 어느정도 노하우가 쌓여가고 있습니다. 최고점과 최저점의 차이를 반환하는 프로그램을 작성하세요.옮기는 작업의 횟수가 제한이 걸려 있습니다. 재밌네요. 그럼 예제를 통해서 문제를 풀어보도록 ㅏ겠습니다.평탄화가 완료되면 더 이상 덤프를 수행할 수 없으므로 그 때의 최고점과 최저점의 높이 차를 반환합니다. 25 8 3 1 5 6 9 9 2 2 4*/ #include #include using namespace std;#define SIZE 100 // 100int k;int map[SIZE];int minVal = 2123456789;in.. 2018. 3. 28.
swe 최대상금 1. dfs 에서도 visit 를 사용합니다. 여기서 어떻게 사용하냐면, depth 에 따른 변동 값을 넣어줍니다. 오께이. 이정도 교환했는데, 그 값에 대해서 값이 정해져 있지 않으면, 반복하는 것이 상당히 많으므로, 그것을 넣어줘서 풀이합니다. dfs 에서도 visit 를 잘 사용하도록 해야 합니다. 어떤 값을 넣어서 중복을 피하게 할 수 있을지 고민하면 됩니다. 알고리즘은 맞는데 시간초과 나면 중복하는 것을 변경하면 됩니다. 메모리는 항상 넉넉함으로, 메모리 초과는 본적이 없으므로. /*1244 최대상금 문제13:53 에 풀어보도록 하겠습니다. 정해진 횟수만큼 교환이 끝나면 숫자판의 위치에 부여된 가중치에 의해 상금을 받습니다.중복 교환 가능합니다. 입력을 받고,정해진 만큼 교환을 실시해서 최대 상.. 2018. 3. 28.
swe 1204 최빈수 구하기 1. 입력을 받아서 최빈수 구하기. 처음에 입력을 받으면서 하나씩 처리하기. 가장 많은 숫자를 받고, 나서 겹칠때에는 큰 수를 나타내기 위해서. 2. 뒤에서 부터 따라서 쓰도록 합니다. /*1204 최빈수 구하기 */ #include #include #include using namespace std; int maxVal;int ans;int map[101];int score; void problemIn() {for (int i = 0; i > score;map[score]++;maxVal = max(maxVal, map[score]);}} void init() {maxVal = 0;memset(map, 0, sizeof(map));} void solve() {for (.. 2018. 3. 28.
swe 1206 View 1. 나의 설계가 확실한지? 더 좋은 방법이나 더 간편한 방법은 없는지 검토하는 시간을 갖습니다. 예외는 없는지 확실하게 합니다. 그러기 위해서 처음과 끝을 처리해봅니다. 예제뿐만 아니라, 문제를 꼼꼼히 읽어보고, 뒤에 받을 새로운 변수에 대해서도 적용해보도록 합니다. 예외가 있을 것 같은 것은 확실히 찾아내도록 합니다. /*11:00 문제 해결 1일차 풀이하도록 하겠습니다.40분컷하도록 하겠습니다. 조망권 확보 됬는지 확인하기 1이 있으면 그곳에 좌우로 2칸씩 확인해서 0이면 오케이입니다. 예제를 보면 0 0 3 5 2 4 9 0 6 4 0 6 0 0 입니다. 다 그릴 필요가 없이 일단 저것을 다 넣은 다음에 인덱스 하나씩 옮겨가면서 양 옆의 빌등의 높이를 받아서 처리하면 됩니다. */ #include.. 2018. 3. 28.
백준 가르침 1. 단어를 학습시키고, 이것이 다른 단어를 읽을 수 있는지 2. 중복이 아닌 조합을 하기 위해서 뒤로만 흘러가도록 설정할 수 있습니다.그래서 그때의 아리를 시작점으로 하고 들어가도록 해야 합니다.하지만, if(depth > 'z' - i + 1 이것이 어디에 사용되는 것인지 궁금합니다. 3. #include #include #include using namespace std;string str;int word[50][15];int alpha[200];int ans;int maxVal;int N, K;int k;int wlen;int cnt;int read; void problemIn() {cin >> N >> K;for (int i = 0; i > str;int length.. 2018. 3. 28.
백준 1062 가르침 1. 풀이는 맞는데, 시간초과 나는 것을 확인해봅니다.그럼 가지치기를 해서 필요없는 접두사랑 접미사를 빼보도록 하겠습니다. 2018. 3. 27.
백준 14620 꽃길 1. dfs를 사용해서 depth 3 까지 구합니다.2. 헷갈리는 부분이 씨앗음 심고 나서, for 문이 그 뒤로만 들어가도록 하고 싶은데, 그렇게는 못하고, 그냥 2중 포문으로 중복이 포함되도록 풀이 했습니다. 이렇게 해도 통과는 되는데, 3. 어떻게 하면 중복되지 않고, for 문 i,j 가 순서대로 검사하도록 할 수 있을까요? 포문 시작을 i, j 로 넣으면 시작은 잘 되는데 다시 아이가 변경될때 제이가 0으로 오지않고, 다른 숫자로 오게 됩니다. 그럼 i 는 그대로 넣고 j를 해볼까요? /*14:52 시작합니다.서로 달ㄴ 3개 씨앗 꽃이 피게하면서 가장 싼 가격에 화단을 대여하려고 합니다.꽃하나당 5평의 땅을 대여해야 합니다.꽃을 심기 위해 필요한 최소 비용을 구해주세요. 십자가 문양이 3개 들어.. 2018. 3. 27.