분류 전체보기
-
Python-2133-타일 채우기Problem Solving 2020. 12. 15. 19:24
타일 채우기 이번주 내내 고민했던 문제였다. 블로그 풀이들을 봐도 이해가 잘 안됐었는데, 오늘 결국 이해를 해서 다른 블로그들 보다 조금 더 자세하게 설명해보려 한다. 그림을 통해 이해를 시도하기 전에 짚고 넘어가야할 부분이 몇가지 있다. 먼저, N X 3 크기의 벽에서 N이 홀수인 경우에는 2 X 1 타일 혹은 1 X 2 타일로 벽을 완전히 채울 수 없다. 타일의 넓이는 2로 짝수임으로 벽의 넓이도 짝수인 경우에만 벽을 완전히 채울 수 있다. 다음으로, 2 X 3크기의 벽을 채우는 경우의 수는 3가지이다. (그려보자) 마지막으로, N X 3(N%2==0) 크기의 벽에 타일을 배열할 때 1) 세로로 나눌 수 없게_ 배치하는 경우의 수는 2) N에 상관 없이 2가지이다. 1)세로로 나눌 수 없는 경우란? ..
-
C++-1181-단어 정렬Problem Solving 2020. 12. 15. 17:17
단어 정렬 C++ 정렬 길이가 짧은 것부터 길이가 같으면 사전 순으로 정렬해야 한다. 'sort' 함수를 사용해야 한다. sort(arr, arr + n) 배열의 첫 번째 포인터 값과, n번째 포인터 값을 전달해 arr 배열을 오름차순 정렬할 수 있다. 이때, 다른 기준으로 정렬하고 싶다면, 세번째 인자로 정렬 기준을 전달해 줘야 한다. bool Comp(string a, string b) { if (a.length() != b.length()) { return a.length() < b.length(); } else { return a < b; } } int main(){ . . . sort(arr, arr + n, Comp) } True, False를 return하는 'Comp&..
-
Python-2751-수 정렬하기2Problem Solving 2020. 12. 14. 19:50
수 정렬하기2 Python의 sort함수를 사용해 문제를 풀고, Quick_sort와 Merge_sort를 추가로 구현해 보았다. sort함수를 사용했을 때 시간이 가장 빨랐고, Merge_sort가 다음, Quick_sort는 시간초과가 발생했다. 어찌 되었든, 목적은 정렬 알고리즘들을 한 번 구현해보는 것이었다. Merge sort를 살펴보자. Merge sort Merge sort(합병 정렬)은 분할 정복을 사용해 정렬하는 방식이다. 분할 정복은 어떤 문제를 더 작은 문제들로 나눠서 해결해 나가는 방식이다. 문제를 분할해 작게 만들고, 작은 문제들을 정복한 후에 이들을 조합해서 원래 문제에 대한 결과를 이끌어 낸다. 6 2 4 1 5 3 을 정렬하는 과정을 그림으로 나타내 보았다. 분할 - 먼저 6..
-
JUNGLE_0주차SW사관학교 Jungle 2020. 12. 13. 21:37
0주차 미니 프로젝트 필수 포함 사항 로그인 기능 (쿠키/세션이란?) Jinja2 템플릿 엔진을 이용한 서버사이드 렌더링 (어떤 장점이 있을까?) 더 고민해볼 키워드 Bootstrap을 대체할 CSS 라이브러리 사용하기 (Bulma 등) JWT 인증 방식으로 로그인을 구현하기 (등장하게 된 배경은?) nginx, gunicorn으로 웹서버 구동하기 (nginx, gunicorn의 역할은?) 아나바다 webpage & git repository 12월 9일부터, 12월 11일 13시까지 홍지님, 민규님과 함께 아나바다 서비스를 만들었다. 에브리타임에서 장터게시판에 계산기, 빔프로젝터 그리고 청소기 등을 빌린다는 게시글들을 보고 생각한 아이디어였다. '빌릴지' 혹은 '빌려달라고 요구할지' 선택해 포스팅하고,..
-
Python-9663-N-QueenProblem Solving 2020. 12. 13. 21:29
N-Queen click 비트 연산자를 사용하고, 대칭성을 이용해 첫째 줄에서는 절반까지 탐색하도록 해서 결국 풀 수 있었다. 유독 시간제한이 심하게 빡빡한 것 같다. 크기가 N X N인 체스판 위에 퀸 N 개를 공격할 수 없도록 배치하는 문제이다. 처음 문제를 풀 때, 배열로 체스판을 실제로 만든 다음에 퀸을 가능한 자리에 배치하고 그 자리에서 공격할 수 있는 구역들을 모두 표시해 주는 식으로 풀었다. 하지만, 당연하게도 시간 초과가 발생해서 다른 방법을 찾아 풀어야 했다. 위의 그림과 같이 퀸을 특정 칸에 배치하면, 해당 칸으로부터 가로, 세로 그리고 대각선에 퀸을 놓을 수 없게 된다. 이때, 퀸을 배치한 자리로부터 한 칸씩 아래 칸으로 내려갈 때마다 대각선 성분들이 한 칸씩 좌우로 멀어져 가는 것을..
-
Python-2468-안전영역Problem Solving 2020. 12. 13. 21:09
안전 영역 click 각 지역의 높이가 주어지고, 높이별로 물에 잠기지 않는 안전영역의 최대 개수를 구하는 문제이다. 먼저 지역의 최대 높이와 최소 높이를 구해서 탐색할 높이의 범위를 정한다. 범위 내에서 각 높이에 대해 안전영역의 개수를 구해야 한다. 이때, 인접한 영역들은 하나의 영역으로 세아리는 방법에 대해서 알아보자. (0,0)부터 물에 잠기지 않은 영역을 탐색해 나가자. 물에 잠기지 않은 영역을 발견하면, 해당 영역을 시작으로 물에 잠기지 않은 인접한 영역들을 모두 찾아줘야 한다. 이때, 인접한 영역을 다시 방문해서 중복으로 숫자를 세는 일이 없도록, visit 리스트를 활용했다. 기본 값은 True이고, 방문한 점들에 대해서 False로 변경시켜 주었다. 물에 잠기지 않은 인접 영역들을 탐색할..
-
JUNGLE 5개월간의 다짐SW사관학교 Jungle 2020. 12. 13. 21:03
꾸준함 최근 꾸준함이라는 가치를 가장 우선순위에 두고 있다. '한 달만 꾸준히 해봅시다.🔥'라는 활동도 진행하며, 내면의 꾸준함을 최대한 행동으로 옮기기 위해 노력하고 있다. 5개월 동안 하루도 빠짐없이 그리고 꾸준히 실천해 나가며, 어제의 나보다 조금이라도 나아지는 매일을 살 계획이다. 'Ford vs Ferrari'영화에 이런 대사가 나온다. If you're going to push a piece of machinery to the limit, and expect it to hold together, you have to have some sense of where that limit is. - Ken Miles '르망 24시'라는 경기는 24시간 동안 프랑스 시골길을 달리는 경기이다. 굉장히 오랜..