[안드로이드] 공공데이터 기차역 정보 조회 서비스 API 사용 [2]

이미지
일단 코레일 티켓창과 비슷하게 만들기 위해, 출발역과 도착역을 설정할 수 있는 Activity 와 출력할 수 있는 것을 만들어 보겠습니다. 주요 기능으로는 URL 요청, XML 파싱, 리스트 뷰, 초성 검색 , 한글 정렬 , 텍스트 Read ProgressDialog 기능들로 구성되어 있습니다. 대략적인 구조를 설명하자면 이런식으로 동작하게 됩니다. AndroidManifest 에 권한 설정을 해주셔야됩니다. < uses-permission android :name= "android.permission.INTERNET" /> < uses-permission android :name= "android.permission.ACCESS_NETWORK_STATE" /> 를 해주시고...  MainActivity 에서 URLRequest.java에 데이터 요청 후, 받는 과정을 설명하겠습니다. activity_main.xml < LinearLayout xmlns: android = "http://schemas.android.com/apk/res/android" xmlns: tools = "http://schemas.android.com/tools" android :layout_width= "match_parent" android :layout_height= "match_parent" android :paddingBottom= "@dimen/activity_vertical_margin" android :paddingLeft= "@dimen/activity_horizontal_margin" android :paddingRight= "@dimen/...

[취업]'삼성전자 S/W역량 테스트' 후기

이미지
' 삼성전자 S/W역량테스트를 4/17일 일요일날 수원 기흥 인재개발원에서 진행하였습니다. 지방에 살던터라, 전날부터 가서 당일 아침 버스 타고가서 치뤘구요 시설은 정말 좋더라구요 호텔 화장실인줄 알았습니다... 어쨋든 시험장에 들어가니 한 고사장에 20명정도, 한 층마다 13고사장 까지 있는데 3개층을 전부 쓰니 한 800명정도는 치는것 같더군요 그리고 오리엔테이션 이후 시작, 1번 문제의 경우 비행기가 적 비행기를 피하고, 코인을 최대로 먹을 수 있는 경우를 찾아라 인데, 조건이 주어집니다. 적 비행기를 만나면 -1 감소, (0에서 적비행기 만나면 종료), 코인을 먹으면 +1 폭탄은 한번 쓸 수 있는데, 쓸 경우 비행기 위치에서 위로 5칸 정도의 비행기는 제거 라는 경우가 있습니다. 아래 그림과 같습니다. 움직이는 것은, 한번에 좌,우,제자리 그리고 y는 자동적으로 한칸씩 전진하게 됩니다. 2차원 배열의 값을 넣고, 즉 이를 토대로 깊이 우선 탐색 및 동적프로그래밍을 설계하는 것 같더군요 깊이 우선 탐색에 관한 경우는 아래와 같이 설계하였었습니다. for(int moveX = -1 , moveY = 1; moveX <= 1; moveX++) dfs(y+moveY , x+moveX, bool bomb(true),muser,bool isvisited) unUsedBomb(board) //지웠던 비행기 복구 for(int moveX = -1 , moveY = 1; moveX <= 1; moveX++) dfs(y+moveY , x+moveX, bool bomb(false),muser,bool isvisited) 이런 식으로, 구성하였고, 폭탄을 사용하지 않고 탐색하는 경우, 폭탄을 사용하고 탐...

[알고리즘] 2-1. [C/C++] 다익스트라를 활용한 최단 경로찾기

출발점, 도착점 사이의 최단 경로를 알아내는 알고리즘, 각 꼭지점은 도시를 나타내고 변은 도로의 길이를 나타날 때, 도시간 최단경로 찾기가 문제이다 최단 경로 찾기에선 가장 간단한 문제 이기도 할 것이다. 일단 5개의 도시로 고정되어있고, -1은 갈 수 없는 거리 0은 자기 자신을 표현한다. 알고리즘을 대략적으로 설계하면, for i -> 0 , 5 , 1 [시작도시][i]로 전체를 검사한다. 완전탐색이지만, 예외조건을 둔다 0과 -1을 제외하고, isVisit을 도시크기만큼 2차원 배열을 같이 두어 방문 체크를 한다. 그리고 최소값만을 Return하는 형식을 취하면 될 것 같다. 도시를 출력하고자 한다면, vector를 따로 두어, 경로를 push_back 하면 될 것 같긴하다. 테스트 케이스 및 자료는 [알고리즘 자료] 2-1 을 보시면 있습니다. #include #include using namespace std; int city[5][5] = { 0, }; bool isVisit[5][5] = { false, }; bool isFinal = false; bool isPossiblePath(int val) { if (val == 0 || val == -1) return false; return true; } void VisitCheck(int src, int dst) { isVisit[src][dst] = true; } void VisitUnCheck(int src, int dst) { isVisit[src][dst] = false; } int Dijkstra(int src,int dst,int fDst,int path) { path = path + city[src][dst]; if (dst == fDst) return path; // 하나의 경로를 찾은 것 int result = 9999; for (int i = 0; i 추...

[알고리즘 자료] 2-1. [C/C++] 다익스트라를 활용한 최단 경로찾기

이미지
구성되는 test.txt파일은 test.txt 0 3 0 5 8 -1 -1 -1 0 1 4 2 -1 -1 0 3 2 4 4 -1 0 1 -1 -1 2 1 0 로 구성되며 그림으로 나타내면, 첫째 줄 0은 출발도시, 3은 도착 도시이고, -1은 갈 수 없는 경로, 0 은 자기자신을 의미한다. 이를 토대로 결과 값은 출력 예로는 위 그림과 같이 출력된다. 소스코드는 [알고리즘] 2-1을 보시면 구현 되어있습니다. 추가로 읽으면 좋을 것

[알고리즘 자료] 1. [C/C++] 4방향 체인코드를 이용한 논 크기 측정 문제

이미지
Test.txt 6 8 1 1 1 0 1 1 0 0 0 0 1 0 0 1 1 1 0 1 1 1 0 1 1 0 1 1 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 1 1 1 1 1 0 0 1 0 0 1 1 0 0 1 1 1 0 7 1 1 1 0 1 1 0 0 0 1 0 0 1 1 0 1 1 1 0 1 1 1 1 1 0 0 1 1 0 0 0 0 0 0 0 0 1 1 1 1 0 1 1 1 1 0 0 1 0 5 1 1 1 0 1 0 0 1 0 0 0 1 1 1 0 1 1 1 0 0 0 0 0 0 0 7 1 1 1 0 1 1 0 0 0 1 0 0 1 1 0 1 1 1 0 1 1 1 1 1 0 0 1 1 0 0 0 0 0 0 0 0 1 1 1 1 0 1 1 1 1 0 0 1 0 10 1 1 1 0 1 1 1 1 0 1 0 0 1 0 0 0 1 1 1 0 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 1 1 1 0 1 0 0 1 0 0 0 1 1 1 0 1 1 1 0 0 0 0 0 0 0 0 1 1 1 0 1 1 1 0 0 0 0 0 0 0 1 1 1 0 1 0 0 1 0 0 0 1 1 1 0 1 1 1 0 0 0 0 0 0 0 9 1 1 1 0 1 1 1 1 0 0 0 1 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 0 0 1 1 1 0 0 0 1 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 0 1 1 1 0 1 1 1 0 0 0 0 0 0 1 1 1 0 이며 답으로는 아래 그림처럼 얻을 수 있습니다 #TestCase : GroupNum, GroupSize .. 추가로 읽으면 좋을 것

[알고리즘] 1. [C/C++] 4방향 체인코드를 이용한 논 크기 측정 문제

알고리즘 문제 공부를 하고 있는데, 정리하여 공부겸 포스팅 할려 합니다. '논 그룹묶기 문제' 이며, 0은 논이아니고 1은 논입니다. 2차원 배열 nxn으로 구성되어있으며, test.txt의 첫 줄에는 테스트 케이스 숫자 다음 줄 부터는 nxn의 배열 크기 , 배열 값 순으로 되어있는 것을 읽으면 됩니다. 이 후 체인코드로 그룹핑된 갯수와 각 그룹들의 크기를 출력하는 문제입니다. ChainCode를 구현하는 문제로서, 4방향이지만, 여기서 대각선만 추가하면 8방향 체인코드 또한 구성됩니다. test.txt는 '알고리즘 자료' 카테고리의 첫번째에 답과 함께 올려 놓았습니다. 다음은 구현 코드이며, 알고리즘으로는, 모든 배열 인덱스에 접근하지만, 이미 그룹화 된 값과 0은 제외를 하고, 방문 할 때마다 그룹 값을 넣고, 그룹화가 끝나면, GroupNum을 증가시켜, 다시 시작하는 방법입니다. 값을 얻을 수 있습니다. 일종의 완전 탐색이지만, 예외조건이 있기에, 모든 곳을 탐색하진 않습니다. 아래 코드에서, 대각선 조건만 추가한다면, 8방향 체인코드로 구성됩니다. #include #include using namespace std; class NoN{ public: int size; }; NoN InitialNoN(int size) { NoN mData; mData.size = size; return mData; } bool IsOutBoard(int arrSize, int y, int x) { if (y = arrSize || x >= arrSize) return true; return false; } bool IsZeroOrGroupCheck(int y, int x, int **board) { if (board[y][x] != 1) return true; return false; } int...

[취업]'나비스 오토모티브 시스템즈' SW 기술전형 시험 후기

이미지
'나비스 오토모티브 시스템즈' 네비게이션을 만들고, SW직군에 대한 보상이 확실하여, 꼭 가고 싶은 회사 중 하나였다. 시험은 C/C++/MFC를 기반으로 치며, 알고리즘 구현능력을 보는 시험이다. STL에 사용여부 제한은 없었으며, 총 13문제 26시간 시험을 친다. '하루 정도는 밤새도 괜찮겠지.. 항상 새왔으니..' 했었는데, 진짜 장난 아닌거 같았다. 다음날 9시부터는 별 생각이 없었다.. 근데 다른 사람들도 26시간 새니.. 뭔가 슈퍼스타K 그룹미션 하는듯한 기분이었다 문제의 난이도는 1~6문제는 금방 풀 수 있던 거였는데, 이상한데서 오류가 나버리는 바람에... 시간을 많이 뺏겨버렸다. 그 후 7번 부터는 다양한 알고리즘 지식이 필요했으며, 풀 엄두를 못냈던거 같다. 구포역 근처 '연수원'을 하나 빌려 거기서 시험을 쳤었고, 사람들이 온 지역에서 온 것 같았다. '경기,서울,경북, 울산' 등.. 담배 피면서 친해진 분이 있었는데 '면접 때 봤으면 좋겠네요' 했지만.. 떨어져서...ㅎ휴ㅠㅠㅠ 만약 시험을 준비하시는 분이라면, 기본 나오는 문제는 윤년 계산, 계산기 정도는 꼭 나온다. 그리고 FILE I/O 처리와 문자열 처리에 관한 것도 나오니 봐두시고 가면 좋을 것 같다. 그리고 지역에 따라 면접비도 준다. 또한, 밤새는것을 위해 라면과 캔커피, 비타민음료 등 많은 것을 제공해준다 이것만 봐도 개발자들을 대우하는 분위기 인거 같은 느낌이 들었다. 어쨋든 이를 통해 한 단계 성장했겠지.. 앞으로의 시험을 치실 분을 위해 포스팅을 합니다.. 제 기준에는 좋은 회사이니 꼭 붙으시길.. 추가로 읽으면 좋을 것

[안드로이드 배포] 오늘 뭐 할래?

이미지
원래 공모전 용으로 제작한 Android App '오늘 뭐할래?' 를 수정 보완을 거쳐 배포를 하였다. App에서 광고가 중요하단걸 깨닫는 한달이었다.. 사용자 수가 당최 늘지 않으니.. 하지만 팀을 만들어 배포를 했다는 것에 의의를 둬야겠다.. 이제 다시 취준생으로..       [주요기능] 1. 문화/축제 정보 제공 (전 지역) 2. 위치 입력을 통한 영화관 상영 정보 조회 3. 즐겨 찾기 추가를 통한 KaKao Talk 공유 기능 4. 즐겨 찾기 추가 된 정보에 대한 네비게이션 서비스 청춘들의 문화 생활을 제대로 즐기기 위한 간편 앱, 오늘 뭐 할래? 입니다. 문화/축제 정보, 미술,박물관의 전시 상황 위치 등록을 통한, 내가 살고 있는 근처 영화관들의 영화 정보 조회상황에 대해 계획을 짜고, 카카오톡으로 공유가 가능합니다. 또한 처음 가보는 위치의 경우, 네비게이션 지도를 통한 위치 이동이 가능하도록 구성되어있습니다. 혹시 필요하신분은 https://play.google.com/store/apps/detailsid=com.team_devbro.first.what_will_you_do_today 에서 다운로드가 가능합니다! 추가로 읽으면 좋을 것

[안드로이드] 공공데이터 기차역 정보 조회 서비스 API 사용 [1]

이미지
공공데이터 data.go.kr의 열차 정보 서비스를 조회하여, 해당 역의 이름과 코드를 받아와 (운임 시간, 기차 종료, 가격) 정보 서비스를 구현 하는 것이 목표입니다. 우선 첫 번째로, 기차역의 역이름과 코드 이름을 받아서 설정해 두어야 합니다. 첫 번째로 필요한 것이 Data.go.kr 에서 회원 가입후, API 사용 신청서를 제출 해야합니다. 사이트에서 열차정보 서비스를 치시면 해당 서비스가 나오게됩니다. 설명서가 담긴 docx 파일도 잇구요, 활용 신청을 누르시면 아래 그림으로 넘어가게 됩니다. 다음과 같이 신청된 상태로 되게 됩니다. 관리자가 승인을 해줘야 그 다음 부터 api 키를 받아서 쓸 수 있어요~ 다음은 설명서 파일의 내용입니다. api 웹 주소 입력시, 다음과 같은 명령어가 어떤 기능을 하는지에 대한 설명입니다. 다음은 요청에 대한 응답 메세지 입니다~ 저런 식으로 정보를 얻을 수 있는 것이지요~ 일단 운행 정보를 알려면, 기차역 정보를 알아야합니다. 문서 파일에 있는 지역 코드 번호입니다.  이 정보를 토대로 지역에 있는 기차역을 조회할 수 있습니다. 운행 정보를 위해 알아야 될 것은 기차역마다 부여된 기차 코드들입니다. NAT010000 인데,  이런 식으로 부여 된 코드들이 필요합니다. getCityAcctoTrainSttnList 를 통해서 역 코드 정보를 얻은 다음에 getStrtpntAlocFndTrainInfo 를 통해서 역과 역사이 운행 정보를 요청 하면 됩니다. 우선 역과 역 코드 정보를 작성, 휴대폰 내부에 txt파일을 만든 소스입니다. 그 다음은 내부 txt코드를 통하여  ...

이 블로그의 인기 게시물

윤석열 계엄령 선포! 방산주 대폭발? 관련주 투자 전략 완벽 분석

대통령 퇴진운동 관련주: 방송·통신·촛불수혜주 완벽 분석

키움 OPEN API MFC 개발 (1)