728x90

분류 전체보기 636

백준 알고리즘] 10797 : 10부제(KOI 2015 지역본선)

시간 제한 : 1 초메모리 제한 : 256 MB 문제서울시는 6월 1일부터 교통 혼잡을 막기 위해서 자동차 10부제를 시행한다. 자동차 10부제는 자동차 번호의 일의 자리 숫자와 날짜의 일의 자리 숫자가 일치하면 해당 자동차의 운행을 금지하는 것이다. 예를 들어, 자동차 번호의 일의 자리 숫자가 7이면 7일, 17일, 27일에 운행하지 못한다. 또한, 자동차 번호의 일의 자리 숫자가 0이면 10일, 20일, 30일에 운행하지 못한다. 여러분들은 일일 경찰관이 되어 10부제를 위반하는 자동차의 대수를 세는 봉사활동을 하려고 한다. 날짜의 일의 자리 숫자가 주어지고 5대의 자동차 번호의 일의 자리 숫자가 주어졌을 때 위반하는 자동차의 대수를 출력하면 된다. 입력첫 줄에는 날짜의 일의 자리 숫자가 주어지고 두..

[C++] STL을 사용해 간편하게 알고리즘 문제 풀기

알고리즘 문제를 풀다 보면, 어떤 경우에는 데이터 처리에 앞서 정렬을 해야 하는 경우가 있다.그럴 때마다 정렬소스를 짜는 것이 비효율적일 뿐더러 정렬 이후 데이터 처리에 신경을 써줘야할 때문제의 시간복잡도를 고려해 퀵 정렬 등을 짜고 있는 건 생산적이지 못하다고 느꼈다.정렬에 대해 자세히 아는 건 좋지만, 그걸 실용적으로 활용하는 것도 중요하다는 이야기다. C언어를 주로 썼을 때는, qsort를 사용했다.(이부분에 대해서는 다른 포스팅에서 소개하겠다.) C++에서는 sort를 사용하면 빠른 시간 내에 정렬된 결과를 받을 수 있다.성능 측면에서는 다른 함수에 비해서는 준수한 수준이다. 이 성능에 대한 진 단순히 퀵 정렬만으로 구성한 정렬이 아니라 복합적으로 힙정렬, 삽입정렬도 섞여 있기 때문이다. 아래 사..

C#] 디렉토리(폴더) 내 파일 조회 프로그램

Delegate 사용 연습을 하려고 간단하게 만들어본 프로그램이다.디렉토리 내 무슨 파일들이 있는지에 대해서 조회하는 프로그램이다.숨김 파일도 검색해내며, 이와 관련하여 FileAttribute와 FileInfo를 사용했다.과거에 만든 프로그램이라서 아이콘은 적용시켜놓은 게 없고, 파일도 없어서 수정도 불가능하다.시간 나면 다시 만들어보겠지만, 별 기능도 없는 것이고 이와 관련된 유사 프로그램을 이미 만들어서 다시 만들어 재배포할 일은 없을 것 같다.

[Android] 자마린 안드로이드 가이드 따라가기 #2

지금까지 애플리케이션을 구동시키는 소스를 작성했다.이것이 정상적으로 작동하게 하기 위해서는 한 가지 해줘야 하는 작업이 있는데, 바로 '퍼미션 설정'이다.앱 개발을 해본 사람들은 알겠지만, 스마트폰의 어떤 것에 접근하기 위해 권한 요청을 하는 작업이다. 참고로, 접근 권한에 대해서 좀 더 엄격해졌다. 과거에는 앱이 설치되는 즉시 명시해놓은 접근 권한에 대해서는 암묵적으로 동의하는 것으로 간주하고 앱 설치 이후에는 명시해놓은 정보들에 무차별 접근했으나, 최근 법이 바뀌어, 사용자가 설치하더라도 해당 권한에 접근하려는 경우 반드시 거기에 따른 권한 허가를 받아야만 한다. 퍼미션에 대한 것은 안드로이드 스튜디오에서와 마찬가지로 AndroidManifest.xml에서 관리한다. 이외에도 xml에 직접 코드를 넣..

[Android] 자마린 안드로이드 가이드 따라가기 #1

자마린 안드로이드 가이드는 다른 가이드처럼 Hello, Android로 시작한다.Hello, Android 가이드는 두 파트로 나뉘어져 있다. 일단 하라는 대로 따라가면서 먼저 만들고 보는 Quickstart와 세부사항들에 대해서 다루고 있는 Deep Dive 두 가지로 나뉘어져 있다. 이번 포스트에서 다룰 가이드는 Quickstart로 드디어 처음으로 C#을 이용해 안드로이드 어플리케이션을 만들어 볼 차례다. 이 가이드를 보고 따라가기 앞서 두 가지 시스템 요구 사항이 존재한다. Windows 7 이상Visual Studio 2013 프로페셔널 혹은 그 이상 버전(커뮤니티도 가능) 자 이제 프로젝트를 생성해보자.여타 다른 프로젝트와 다를 것 없이 프로젝트를 생성해주면 된다. Visual C#>Andro..

[Android] Xamarin(자마린) 시작하기

진정한 크로스 플랫폼 개발 툴로, 이상적인 경우 10~15% 내외의 OS별 특징적인 설정을 제외하고는 나머지 모든 것을 공유하게 끔 하는 마법의 도구로 불려진다고 한다. 자마린 하나로 거의 완성형에 가까운 앱을 만들 수 있다는 것과 마이크로소프트가 강력하게 푸쉬하고 있는 C#, Visual Studio를 이용할 수 있다는 점이 크게 장점이라고는 한다. 개인적으로 양대OS(안드로이드, iOS)별 네이티브 앱 개발에 이미 능숙한 사람들이 모여 각자의 언어(java, Swift)로 다루어 내는 것이 훨씬 빠르지 않을까 하는 생각이긴 하지만, 향후 생산성 측면에서는 자마린도 나쁘지 않다고 생각한다. 뭐 이런저런 이야기는 다 고사하고, 필자에게는 C#으로 플랫폼을 뛰어넘는 앱 개발이 가능하다는 것 그 자체가 매력..

Visual Studio 2017 업데이트 후 Win32 Console Application(콘솔 응용프로그램)

Visual Studio Installer를 이용하여 별도로 수정, 복구해 삭제된 경우가 아니라면 이 상황에 해당될 것이다.필자도 여느 때처럼 C++을 이용해서 알고리즘 문제를 풀려고 했는데 갑자기 삭제되어 많이 당황했다.전날 손 댄 것이라곤 SDK 설치와 비쥬얼 스튜디오 업데이트 뿐이었는데 갑자기 증발했다. 다짜고짜 이 템플릿은 이 설치에 없다면서 제거해버리라니.방법이 없어서 일단 수정과 복구를 반복했지만 결과는 동일했다.사실 빈 프로젝트를 선택하면 기존 방법과 동일하게 작성할 수 있지만,건드린 것 하나 없이 이런 일이 생겼다는 것이 수상해 뒤적거리던 중,안드로이드 SDK 설치가 이런 문제를 일으킬 일은 없고, 전날 했던 업데이트로 인해 뭔가 잘못된 것을 직감했다. 이 모든 일은 최근 업데이트와 관련이..

Visual Studio(비쥬얼 스튜디오)에서 Android SDK 경로 설정 방법

아는 사람들은 알겠지만, 꽤 오래 전부터 Visual Studio(비쥬얼 스튜디오)에서도 안드로이드 어플 개발이 가능했다.그뿐만 아니라 iOS, Windows Mobile까지 훌륭한 이식성을 바탕으로 크로스 플랫폼 개발이 누구나 가능한데, 이 모든 것은 Xamarin(자마린)이 만들어 낸 결과다. 거기에, 자마린을 인수해 그것을 무료로 풀어버린 마이크로소프트의 기여 정신까지 더해진 결과. 안드로이드 스튜디오를 배척하는 것은 아니지만 좀 더 새로운 것을 해보고 싶고, 자주 다루는 C#을 이용하고 싶어서 자마린을 시작했다. 안드로이드와 함께 양대 모바일 OS라 불리는 iOS는 테스트할 환경조차 없지만 말이다. 안드로이드 개발을 해본 사람들이라면 알겠지만 다양한 버전의 SDK를 막 설치하다 보면 설치 경로의 ..

DataStructure] 힙(Heap, 히프) 만들기 - 2

앞선 글에서(링크) 이야기했던 대로, BuildHeap Algorithm은 다음과 같은 순서로 알고리즘이 진행된다. 가장 먼저 i=[n/2]=15로 시작하여 DownHeap을 호출해, i가 1이 될 때까지 총 15회 DownHeap을 호출한다.이 때 i에 대응되는 노드를 '시작 노드'라고 했을 때, DownHeap은 시작 노드의 값을 자식 노드들의 값과 비교해 힙 조건이 만족되는 순간까지 시작 노드의 값을 아래 쪽으로 자리를 바꾸며 이동시키는 작업을 실시한다. 즉, 시작 노드를 루트 노드로 간주하여 부분 힙를 구성하고,그 부분 힙을 합쳐나가는 과정을 거치는 것이다. 힙을 만드는 알고리즘 BuildHeap의 시간 복잡도가 O(n)인 이유는 아래와 같이 증명할 수 있다. n=31(노드 수 31개)인 경우, ..

백준 알고리즘] 2292 : 벌집(ACM-ICPC 2004 Regional)

시간 제한 : 2 초메모리 제한 : 128 MB 문제 위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌을 때, 벌집의 중앙 1에서 N번 방까지 최소 개수의 방을 지나서 갈 때 몇 개의 방을 지나가는지(시작과 끝을 포함하여)를 계산하는 프로그램을 작성하시오. 예를 들면, 13까지는 3개, 58까지는 5개를 지난다. 입력첫째 줄에 N(1 ≤ N ≤ 1,000,000,000)이 주어진다. 출력입력으로 주어진 방까지 최소 개수의 방을 지나서 갈 때 몇 개의 방을 지나는지 출력한다. 소스코드 #include using namespace std; int main() { int..

728x90