삼성 SDS에서 동계 알고리즘 특강을 진행한다는 공고를 보게 되었다 알고리즘 공부를 하면서 너무 모르는 것이 많아 힘들던 내게 정말 좋은 기회라고 생각되어 바로 지원을 하려고하는데 입과테스트가 존재했었다. 교육을 받으려고 하는데 입과테스트를 통과해야한다니..ㅜㅜ 하지만 정말 꼭 이수하고 싶었으므로 간절한 마음으로 입과테스트를 시작하였다. 입과테스트는 lv1 2문제 lv2 4문제 lv3 2문제가 존재했었는데테스트 시간이 1-2시간 주는게 아니라 한 5-6일 정도 주어졌던 것으로 기억한다.따라서 모르는 알고리즘을 공부하고 주변 사람들에게 많이 물어보기도 하며 알고리즘 문제를 푸는데 기간동안 할 수 있는 시간을 전부 투자해서 문제를 풀었다.다행히도 학교에서 배웠던 다익스트라 알고리즘이나 dfs, 정렬등을 이용..
백준 1717번 집합의 표현 에 Union-Find 알고리즘을 적용하여 문제를 풀었는데 같이 푼 다른 사람들은 다 맞는데 나만 시간초과가 났다. 같은 알고리즘의 같은 방식의 예외처리를 한 사람도 있었는데 도대체 왜 시간초과가 났을까? 친구에게 조언을 구해보니 문제는 cin과 cout에 있었다. 나는 c++을 사용할 때 입출력 함수로 cin과 cout을 사용하는데, cin과 cout은 printf와 scanf에 비해 어마무시하게 느리다는 사실을 듣게되었다. 왜 속도가 차이가 날까? cstdio의 prinft, scanf는 데이터의 타입을 프로그래머가 지정해줘야해서 오류가 발생할 수는 있지만 더욱 빠른 속도를 내고iostream의 cout, cin은 입출력 데이터의 타입을 프로그래머가 지정해주지 않아도 타입..
프로세스는 실행중인 프로그램이라고 할 수 있다. 하나의 프로세스의 메모리는 heap, stack, data, code 영역을 갖는다.프로세스는 스레드를 포함한다. 스레드는 프로세스 안에서 실행되는 흐름의 단위 이다.스레드는 stack만 따로 갖고 heap, data, code 영역은 공유하여 사용한다. 각각의 프로세스끼리는 독립적이지만 스레드끼리는 자원을 공유하여 사용하기 때문에 독립적이지 않다.병렬 처리 기법인 멀티 프로세스, 멀티 스레드를 보며 차이를 알아보자. 프로세스나 스레드는 한 번에 한개씩 동작한다고 생각하면 좋다. 한 번에 한개씩 동작하는 프로세스를 동시에 사용하기 위해서는 여러개의 프로세스를 빠른 속도로 번갈아가며 실행하는 것이다. 빠른 속도로 번갈아가며 실행하기 때문에 동시에 사용하는 것..
다른 사람의 컴퓨터에서 git으로 작업을 마친 뒤, 컴퓨터 주인의 설정으로 바꿔놓았는데 Permission to "repository" denied to "name(내 계정)" 과 같은 에러가 발생하였다. 분명 git config global 설정을 바꿔주었는데도 불구하고 왜 내 계정으로 접근을 시도할까? 문제는 Credential(인증정보) 였다. Git은 인증정보(Credential)를 입력하는 경우 인증정보를 저장해두고 자동으로 입력해주는 시스템을 제공한다.Git으로 push 등의 작업을 할 때 계정 정보를 묻는 창이 이러한 작업을 해주는 것이었다. 따라서 해당 인증정보가 남아서 그랬던 것이므로 인증정보를 삭제해주면 된다. 해결 방법은 아래와 같다. (windows 10 기준) 제어판 -> 자격 증..
네이버 아이디로 로그인 하기 위해서는 우선 developers.naver.com 에 가서 오픈 API를 신청해야 한다. 오픈 API를 신청하고 나면 아래와 같은 화면이 나타난다. 이후 현재 버전(작성 당시 4.2.0)에 맞는 sdk 파일을 https://developers.naver.com/docs/login/sdks/ 에서 다운 받는다. 이후 .aar 파일을 libs/에 넣고 gradle에 추가해준다. implementation 'com.naver.nid:naveridlogin-android-sdk:4.2.0' implementation files('libs/naveridlogin_android_sdk_4.2.0.aar') implementation 'com.android.support:appcompa..
기상청에서 제공하는 Json 파일을 이용하여 안드로이드에 시군구 데이터를 삽입하려 한다. Activity 안에서 URL을 이용하여 네트워크에 연결하려고 하였을 때 에러가 발생한다. 이는 main Thread(UI Thread)에서 너무 많은 동작을 요청했기 때문인데, 해당 문제는 AsyncTask 를 이용하는 방법으로 해결할 수 있다. 아래는 내가 이용했던 기상청의 url 인데, 지역코드와 지역명이 json의 형태로 들어있다. http://www.kma.go.kr/DFSROOT/POINT/DATA/top.json.txt http://www.kma.go.kr/DFSROOT/POINT/DATA/mdl.시의 지역코드.json.txt http://www.kma.go.kr/DFSROOT/POINT/DATA/lea..
다음 지도 API 앱 기본 설정 Kakao 개발자 사이트(https://developers.kakao.com)에서 앱 생성을 진행한다. 이후 지도 API를 안드로이드에서 사용할 것이기 때문에 내 애플리케이션-앱-일반에서 플랫폼 설정을 진행한다. 플랫폼 추가를 클릭하면 해당 창이 나오는데, 안드로이드 패키지 명을 입력하면 자동적으로 마켓 URL도 나타난다. 패키지 명을 입력하고 추가를 누르면 아래 창이 나오는데 키 해시의 값은 비어있는 것을 알 수 있다. 키 해시가 등록된 앱에서만 SDK를 이용하여 API를 호출할 수 있으므로 키 해시 값을 프로젝트에서 가져와보도록 하자. @Override protected void onCreate(Bundle savedInstanceState) { super.onCrea..