본문 바로가기

Programming399

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.
swe 보급로 1. bfs 를 해서 계속 돌아가는데, 섬을 가지고 돌아다닙니다. 그런데 만약에 섬을 가지고 돌아다니다가, 이게 하도 돌아서 섬이 커지면 d_map 에 적용되지 않도록 합니다. 2. 그것을 위해서 처음에 d_map 은 엄청 큰 수로 넣어주고, 가지고 다니는 섬끼리 비교를 하도록 해서 작은 섬만 남도록 합니다. 3. 그래서 이것이 끝점까지 도달하면 끝. 가지치기가 그렇게 많이 필요없는 이유는 섬이 조금만 방황해도 엄청 숫자가 커지기 떄문에, 빠르게 감소할 것 입니다. /*1330 시작해서 풀어보도록 하겠습니다.보급로 문제 dp 로 풀어보도록 하겠습니다. */ #include #include #include #include #define SIZE 104 // 102using namespace std; int.. 2018. 3. 27.
백준 1941 소문난 칠공주 1. 연결되어 있는지 확인 하기 위해서 bfs 를 사용합니다.dfs 로는 십자모양을 검사할 수 없기 때문에 7개를 선정하는 과정은 맵이 아닌 단순하게 25C7 을 사용하여 선정합니다. 코드가 if 문이 길어서 시간초과가 나지 않고, 시간복잡도를 풀면 됩니다. /*1. 25시7 조합을 만듭니다.2. 에스가 4 이상인지 확인을 합니다.3. 연결되어 있는지 확인을 합니다. 4. 위의 조건이 맞으면 정답++ 을 합니다. */ #include #include #include #include using namespace std;#define SIZE 5 int map[SIZE][SIZE];int visit[SIZE][SIZE];int check_map[SIZE][SIZE];int x, y, nx, ny;int df.. 2018. 3. 27.
백준 2178 미로 탐색 stl 큐가 아닌 직접 큐를 사용해보기. front, rear 만 인덱스를 사용하면 됩니다.그리고 새로운 bfs 가 들어오면 front, rear 를 초기화하면 됩니다.지금은 bfs 를 한번만 사용해도 되므로 문제가 없습니다. rear 가 들어가는 부분을 끌고 갑니다.그리고 front 가 출력하는 부분을 끌고 나갑니다. 2018. 3. 26.
swe D3 Magnetic 1. 교착상태를 만들기 위해 포문을 사용할 때 주의해야 합니다. 내려가는 것은 아래서부터 검사하고, 올라가는 것을 위에서부터 검사하도록 합니다. 오께이. 2. 그리고 bfs 로 풀어서 교착상태를 세어줄 때는 교착 하는 조건을 정확하게 이해해주어야 합니다. /*1220 Magnetic1416 시작 1445 안에 설계 완료 후 코드 완성하기. 1. n번에 대해서 이동을 시킵니다. 이것은 단순하게 이중 포문 써서 하나씩 이동하도록 하겠습니다. 2. 교착상태의 갯수를 세도록 합니다. 세는 것 또한 열을 기준으로 샙니다. 1이나 2가 있으면, 오케이 하고, bfs 를 아래로만 해서 연속되는 것까지 이동하고, ++ 하나를 해주고, 다시 끝열까지 검사를 해서 또 있으면 ++ 를 해주면 됩니다. 오께이. 여기서는 bf.. 2018. 3. 24.