분류 전체보기

    [코딩테스트 / c++] 공주 구하기 (조세퍼스) 문제

    문제 풀이 #include #include #include using namespace std; int main(){ int n, k, pos=0, bp=0, cnt=0, i; scanf("%d %d", &n, &k); vector prince(n+1);//0으로 초기화 while(1){ pos++; if(pos>n) pos=1;//pos=9일 경우 1로 pos초기화 if(prince[pos]==0){ cnt++; if(cnt==k){ prince[pos]=1;//out cnt=0; bp++;//n-1명 out명수 체크 } } if(bp==n-1) break; } for(i=1; i

    안드로이드 뒤로가기 버튼 이벤트 종료 안되게하기

    안드로이드 앱 실행 중 뒤로가기 버튼을 누르면 종료되는 경우가 있다. 이 때 두 번 클릭 할 경우에만 앱이 종료되게 변경해보자. package com.meongj.backbutton_ex import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.os.Handler import android.util.Log import android.widget.Toast import androidx.core.os.HandlerCompat.postDelayed class MainActivity : AppCompatActivity() { private var isDouble = false override fun onCreat..

    안드로이드 Adaptor View(어댑터 뷰)의 개념 및 예제

    Adaptor View(어댑터 뷰) 먼저 Adapter(어댑터)란 데이터와 View를 연결짓는 다리 역할을 하는 객체를 말한다. Adaptor View는 Adapter가 관리하는 데이터를 출력시켜줄 수 있는 view이다. 많은 정보들을 view에 직접 정보를 주입하여출력하지 않고, Adapter가 중간 다리 역할을 하여 관리해준다. Adaptor View는 ViewGroup을 상속을 받아 많은 view들을 담을 수 있고 출력할 수 있게 해준다. 어댑터 뷰 예제 어댑터 뷰 구조 및 흐름 MainActivity -> List['a','b','c'] -> Adapter -> listView_item.xml -> activity_main.xml (list) activity_main.xml 메인 xml에서 어댑터..

    [SQL] NULL(널) 처리 함수 (NVL / ISNULL)

    리눅스에서 스크립트를 작성하고 있는데 테이블에 있는 값을 조회해서 다른 테이블에 넣는 작업을 하고 있었다. 오라클 DB로 SELECT한 결과 값을 따로 파일에 저장하고 그 파일을 가져오는 데 있어서 null 인 값들은 리눅스에서 공백('')으로 저장이 되어진다. 그래서 파일에 있는 값들을 읽어서 파라미터로 INSERT를 하려면 공백인 값들은 인식이 안되는 문제가 생기게 된다. 어떻게 할까..? 고민하다가 null인 값들은 문자열 'null'로 저장하자는 결론을 내렸다. 이러한 null을 처리해서 다른 문자열로 대체하는 SQL 함수를 소개하려고 한다. 일단 NULL 이라는 아이를 먼저 알아보자! NULL 이란? - NULL 값은 아직 정의되지 않은 값으로 0 또는 공백과 다르다. 0은 숫자고, 공백은 하나..

    [알고리즘] 병합정렬(Merge Sort)의 개념 with c++

    병합정렬 또는 합병정렬은 정렬할 데이터들을 일단 반으로 쪼개고 각 각 정렬한 후 나중에 합치는 알고리즘이다. 비교 기반 정렬 알고리즘이고, 일반적인 방법으로 구현했을 때 안정 정렬에 속하며 분할 정복 알고리즘의 하나이다. 매번 정렬된 데이터를 담을 배열 공간이 추가적으로 필요하다는 점에서 메모리 사용이 비효율적인 문제가 있다. 이에 병합 정렬의 시간 복잡도는 어떤 상황에서도 O(N*logN)이다. 병합 정렬 c++ 코드구현 #include #include //배열 #include using namespace std; int a[101], b[101], c[300]; int main(){ // 두 배열 합치기 int n, m, i, p1=1, p2=1, p3=1;//포인트 scanf("%d", &n); f..

    [코딩테스트 / c++] Inversion Sequence (삽입 정렬 풀이)

    문제 1부터 n까지의 수를 한 번씩만 사용하여 이루어진 수열이 있을 때, 1부터 n까지 각각의 수 앞에 놓여 있는 자신보다 큰 수들의 개수를 수열로 표현한 것을 Inversion Sequence라 한다. 예를 들어 다음과 같은 수열의 경우 4 8 6 2 5 1 3 7 1앞에 놓인 1보다 큰 수는 4, 8, 6, 2, 5. 이렇게 5개이고, 2앞에 놓인 2보다 큰 수는 4, 8, 6. 이렇게 3개, 3앞에 놓인 3보다 큰 수는 4, 8, 6, 5 이렇게 4개...... 따라서 4 8 6 2 5 1 3 7의 inversion sequence는 5 3 4 0 2 1 1 0 이 된다. n과 1부터 n까지의 수를 사용하여 이루어진 수열의 inversion sequence가 주어졌을 때, 원래 의 수열을 출력하는 ..

    [코딩테스트 / c++] Least Recently Used(2018 카카오 캐시 문제 변형)

    문제 캐시메모리는 CPU와 주기억장치(DRAM) 사이의 고속의 임시 메모리로서 CPU가 처리할 작업 을 저장해 놓았다가 필요할 바로 사용해서 처리속도를 높이는 장치이다. 워낙 비싸고 용량이 작아 효율적으로 사용해야 한다. 철수의 컴퓨터는 캐시메모리 사용 규칙이 LRU 알고리즘을 따 른다. LRU 알고리즘은 Least Recently Used 의 약자로 직역하자면 가장 최근에 사용되지 않 은 것 정도의 의미를 가지고 있습니다. 캐시에서 작업을 제거할 때 가장 오랫동안 사용하지 않은 것을 제거하겠다는 알고리즘입니다. 만약 캐시의 사이즈가 5이고 작업이 2 3 1 6 7 순으로 저장되어 있다면, (맨 앞이 가장 최근에 쓰인 작업이고, 맨 뒤는 가장 오랫동안 쓰이지 않은 작업이다.) 1) Cache Miss :..

    [알고리즘] 삽입 정렬(Insertion sort) 의 개념 with c++

    삽입 정렬이란 자료 배열의 모든 요소를 앞에서 부터 비교하고자 하는 타겟값(tmp)과 정렬된 값을 비교하여 자신의 위치를 찾아 삽입하면서 정렬해나가는 알고리즘이다. 매번 비교할 때마다 앞 부분에 해당하는 범위 모두 타겟값과 비교하여 해당 원소를 삽입할 수 있는 위치를 찾아 배열 위치에 넣는다. 📌정렬 과정(오름차순) 1. 2번째 원소부터 비교 시작한다 2. 이전 위치에 있는 원소들과 타겟이 되는 원소들을 비교한다(타켓 원소는 임시변수에 넣는다) 3. 타겟 원소가 이전 위치에 있던 원소보다 작다면 위치를 바꾼다 4. 이전 데이터도 차례대로 비교하며 정렬해나간다 5. 이 방법을 반복해서 정렬한다 📌특징 구현이 간단하다 배열이 길어질수록 효율이 떨어진다 선택 정렬이나 버블 정렬과 같은 O(n^2) 알고리즘에 ..