목록분류 전체보기 (265)
SW
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/b3cQTb/btqBHx8wYDH/rL18XycIWwhpUZTvdTOecK/img.png)
0. 제목 백준 2750 수 정렬하기 BOJ 2750 수 정렬하기 C++ 2750 수 정렬하기 1. 문제 https://www.acmicpc.net/problem/2750 2. 풀이 가장 작은 것을 앞으로 보내는 것이 핵심 아이디어인 선택 정렬을 사용하였다. 가장 작은 원소를 맨 앞으로 보내고 다음 Loop에서는 두번째 작은 원소를 두번째로 보내고 이런식으로 원소 개수만큼 Loop를 돈다. 3. 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 #include using namespace std; int main(int argc, const char * argv[]) { int N; int ar..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/dgZ07R/btqBGppChHt/I8YYbVdHG4iDnSA0f3lmQ1/img.png)
0. 핵심 아이디어 옆에 있는 값과 비교해서 더 작은 값을 앞으로 보내면 어떨까? 1. 예시 1 10 5 8 7 6 4 3 2 9 1 5 10 8 7 6 4 3 2 9 1 5 8 10 7 6 4 3 2 9 1 5 8 7 10 6 4 3 2 9 1 5 8 7 6 10 4 3 2 9 1 5 8 7 6 4 10 3 2 9 1 5 8 7 6 4 3 10 2 9 1 5 8 7 6 4 3 2 10 9 1 5 8 7 6 4 3 2 9 10 //결국 가장 큰 값이 뒤로 오게 됨. 첫번째 Loop 끝. 1 5 7 8 6 4 3 2 9 10 1 5 7 6 8 4 3 2 9 10 .... 2. 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 #include using n..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/ctnvTq/btqBFNkbERw/pukAbgB7aaryg9AT7XenN1/img.png)
0. 핵심 아이디어 가장 작은 것을 선택해서 제일 앞으로 보내면 어떨까? 1. 예시 1 10 5 8 7 6 4 3 2 9 1 2 5 8 7 6 4 3 10 9 1 2 3 8 7 6 4 5 10 9 1 2 3 4 7 6 8 5 10 9 1 2 3 4 5 6 8 7 10 9 1 2 3 4 5 6 7 8 10 9 1 2 3 4 5 6 7 8 9 10 2. 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 #include using namespace std; int main(int argc, const char * argv[]) { int i, j, min, index, temp; int array[10] = {1, 10, 5, 8, 7, 6,..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cs3Nsy/btqBEAsh66i/KaDc6cHKRBdkrKfQaUHyOk/img.png)
0. 제목 백준 1260 DFS와 BFS BOJ 1260 DFS와 BFS C++ 1260 DFS와 BFS 1. 문제 https://www.acmicpc.net/problem/1260 2. 풀이 먼저 탐색을 완료했는지 여부를 체크하는 checked 배열을 선언한다. 그래프를 생성해줄 때는 vector를 이용해서 선언해준다. 연결되어 있는 점들을 해당 vector에 push_back 해줌으로써 원소로 추가해준다. 그렇게 그래프를 생성한 후 오름차순으로 정렬해주어야 한다. 그 이유는 정점이 여러 개인 경우에 작은 번호부터 먼저 방문하기 때문이다. DFS의 경우에는 이미 탐색 완료를 하였으면 리턴하고 탐색하지 않았으면 탐색상태를 true로 바꿔준 후, 출력해준다. 그리고 그 점에 연결되어 있는 점들을 재귀적으로..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/b0AHMU/btqBEA0dndY/dhsGKBmKYK4K6PmJoxwrj0/img.png)
0. 제목 백준 11054 가장 긴 바이토닉 부분 수열 BOJ 11054 가장 긴 바이토닉 부분 수열 C++ 11054 가장 긴 바이토닉 부분 수열 1. 문제 https://www.acmicpc.net/problem/11054 2. 풀이 DP 방식을 이용하였다. 가장 긴 증가하는 부분 수열을 앞에서부터 한 번, 뒤에서부터 한 번 실시하면 된다. 먼저 모든 dp[i] 값을 나올수 있는 최소값인 1로 초기화 시킨다. dp[i]를 구하기 위해서는 다음과 같은 과정을 거쳐야 한다. 해당 인덱스의 배열 값(A[i])과 그 이전 값들을 비교한다. A[i]가 이전 값들보다 크면 1씩 증가해주면 된다고 생각할 수 있다. 그러나 그렇게 하면 오류가 발생한다. 각각의 전 dp값들과 비교하지만 dp[i] < dp[j] + ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bEfwdY/btqBFNdmbiq/EISMBL58iYES2npvtJWns1/img.jpg)
0. 구글 앱스토어 개발자 등록 구글 앱스토어에 25달러를 내면 개발자로 등록할 수 있다. 1. 개선할 점 데이터베이스를 다시 모델링 하면 좋을것 같다. 기숙사는 메뉴를 이미지로 제공한다. 그래서 이미지를 띄워주는 방식으로 해결하였는데 더 효율적인 방법이 있나 찾아봐야겠다. 디자인에 조금 더 노력을 기울여서 사용자들이 보았을 때 디자인이 안좋다는 생각이 들지 않도록 해야겠다. 안드로이드 사용자뿐만 아니라 iOS 사용자들도 이용할 수 있도록 Swift를 공부하여 iOS 버전도 만들어야겠다.
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/ojmYb/btqBFuLSK5p/EmxymZ0l9hbOrEKiTtjUN1/img.png)
0. 사용 이유 매주 바뀌는 메뉴를 띄워주기 위해서는 데이터를 제공해주는 서버가 필요하였다. 크롤링한 결과를 저장한 DB를 저장하기 위한 공간이며 사용자가 앱을 업데이트하지 않아도 바뀐 내용을 볼 수 있도록 해준다. 식당의 운영시간 변경이라던지 위치 변경같은 상황에서도 내가 데이터를 바꾸기만 하면 되기때문에 문제에 대한 빠른 대처가 가능하다. 1. 사용 방법 1년간 프리티어가 가능하므로 VISA카드를 등록한 후 회원가입하였다. 인스턴스를 만들고 보안그룹 인바운드 설정에서 MySQL 접속이 가능하도록 설정한다. HTTP의 접속도 가능하도록 설정하고 내가 터미널에서 SSH를 사용해서 접속 할 수 있도록 SSH에 나의 IP도 접속 가능하도록 설정한다. 한가지 불편한점은 노트북을 사용해서 네트워크가 항상 바뀌기..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cq6ksF/btqBFM6zSyF/ks9QHw3OAvbTUOCrrfLVK1/img.png)
0. Android 사용 먼저 사용자들에게 보여질 아이콘 모양을 설정하였다. 그 후 안드로이드로 화면 가장 처음에 나오는 Splash Screen을 만들었다. Splash 이후에 나오는 본 화면을 Grid View를 이용하여 만들었다. Grid View 에서 클릭하면 해당 장소의 식당 메뉴가 나오도록 하였다. 그 과정에서 php 파일에 있는 JSON 형태의 데이터를 불러오는 과정이 필요하였다. 1. 결과 버튼 클릭을 하면 오늘 날짜가 위에 뜨고 밑에 메뉴가 뜬다. 운영하지 않는 요일에는 운영하지 않는다는 메세지를 띄워준다. 정보에는 식당 정보와 앱 정보를 표시해준다.
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/celDX1/btqBDYHcKgZ/MklKOzDKgvip0dhilgf581/img.png)
0. PHP 사용이유 Database 에 크롤링 결과를 저장하였다. MySQL을 사용하였는데 안드로이드로 MySQL DB를 사용하려면 PHP를 거쳐야 한다. 즉, MySQL - PHP - Android 이런 식으로 데이터가 전달되는 것이다. 1. 사용 방법 전달되는 형식은 JSON 형식을 사용하였다. 서버에 접속하여 sudo vi library.php 와 같은 방식을 사용하여 파일을 작성한다. php 파일에서 RDS 접속이 가능하도록 한 후 JSON 형식으로 만들어 주었다. 날짜마다 보여주는 메뉴를 다르게 하기 위해서 date를 사용하였다.
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/dYqBwD/btqBHyM6wLv/XjOSHgk81mkYkfqI2YfgK0/img.png)
0. 사용방법 python에서 크롤링 결과를 DB에 저장하는 과정이다. pymsql.connect 를 사용하여 host, port, user, password, db 등을 접속할 수 있도록 한 후 저장한다. 저장한 후 commit 하면 된다. 1. DB 저장 결과 먼저 터미널로 서버에 접속한 후 DB 결과를 보면된다. Workbench로도 서버와 연결시킨 후 확인 가능하다. 2. 개선해야할 점 중복을 없애고 Data Modeling 을 다시 해야할 것같다. 그냥 데이터를 다 넣어버렸으니 좋은 결과라고 할 수 없는 것 같다. 모델링을 하게 되면 테이블도 간단해지고 용량도 적게 사용할 수 있다. date테이블을 만들고 그 테이블의 컬럼에 corner_id 를 추가 하는 등 다시 모델링 해볼 것이다.