K번째 수 (프로그래머스) [JAVA]
알고리즘/문제풀이 2020. 8. 26. 16:54

문제 문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/42748 코딩테스트 연습 - K번째수 [1, 5, 2, 6, 3, 7, 4] [[2, 5, 3], [4, 4, 1], [1, 7, 3]] [5, 6, 3] programmers.co.kr 배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 정렬했을 때, k번째에 있는 수를 구하려 합니다. 예를 들어 array가 [1, 5, 2, 6, 3, 7, 4], i = 2, j = 5, k = 3이라면 array의 2번째부터 5번째까지 자르면 [5, 2, 6, 3]입니다. 1에서 나온 배열을 정렬하면 [2, 3, 5, 6]입니다. 2에서 나온 배열의 3번째 숫자는 5입니다. 배열 array, [i,..

H-Index (프로그래머스) [JAVA]
알고리즘/문제풀이 2020. 8. 26. 01:16

문제 문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/42747 코딩테스트 연습 - H-Index H-Index는 과학자의 생산성과 영향력을 나타내는 지표입니다. 어느 과학자의 H-Index를 나타내는 값인 h를 구하려고 합니다. 위키백과1에 따르면, H-Index는 다음과 같이 구합니다. 어떤 과학자가 발표 programmers.co.kr H-Index는 과학자의 생산성과 영향력을 나타내는 지표입니다. 어느 과학자의 H-Index를 나타내는 값인 h를 구하려고 합니다. 위키백과1에 따르면, H-Index는 다음과 같이 구합니다. 어떤 과학자가 발표한 논문 n편 중, h번 이상 인용된 논문이 h편 이상이고 나머지 논문이h번 이하 인용되었다면 h의 ..

8. 탐색 - 선형 탐색, 이진 탐색, 이진 탐색 트리, 해시 탐색
알고리즘/스터디 2020. 8. 25. 03:15

선형탐색 순서대로 하나 하나씩 찾는 방법. $O(N)$의 시간복잡도. public int LinearSearch(int data[], int key){ for(int i=0; i 폴딩이라고 한다. 탐색 키가 문자열일 경우 주의할 점. 가장 보편적인 방법은 아스키 코드 값을 모두 더하는 것 but 탐색 키들이 동일한 문자로 이루어져있지만 위치가 다른 경우 ex) are, ear 같은 경우 구분할 수 없다. 아스키 문자 코드가 65~122이기 때문에, 3자리인 경우 195~366으로 해시 주소가 집중될 수 있다. 이를 해결하기 위해 아스키 코드 x 문자의 위치를 사용한다. 문자열 s가 n개의 문자이고, i번째 문자의 값을 $u_i$라 할때 $u_0g^{n-1} +u_1g^{n-2} + ... + u_{n-2..

도전과제 15 : 입력 화면의 애니메이션 (Do it 안드로이드 앱 프로그래밍) [JAVA]
코딩/Do it Android [JAVA] 2020. 8. 18. 16:07

도전과제 15 고객 정보 입력 화면을 만들고 이 화면이 보이거나 사라질 때 애니메이션이 동작하도록 해보세요. 새로운 액티비티를 추가하고 고객 정보 입력이 가능하도록 만듭니다. 고객 정보 입력 화면에서는 이름과 나이, 전화번호를 입력받도록 만듭니다. MainActivity에서 [입력 화면으로] 버튼을 누르면 고객 정보 입력 화면이 보이도록 합니다. 이 과정에서 오른쪽에서 왼쪽으로 나타나는 애니메이션을 적용합니다. 고객 정보 입력 화면에서 [저장] 버튼을 누르면 MainActivity로 돌아오도록 합니다. 이 과정에서도 애니메이션을 적용합니다. 참고할 점 화면 전체에 애니메이션을 적용할 수 있습니다. 풀이 레이아웃은 간단하게 main화면과, 버튼을 누르면 나올 고객정보 입력 창을 만들었다. 애니메이션을 만들..

정수 삼각형 (프로그래머스) [JAVA]
알고리즘/문제풀이 2020. 8. 18. 15:31

문제 문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/43105 코딩테스트 연습 - 정수 삼각형 [[7], [3, 8], [8, 1, 0], [2, 7, 4, 4], [4, 5, 2, 6, 5]] 30 programmers.co.kr 위와 같은 삼각형의 꼭대기에서 바닥까지 이어지는 경로 중, 거쳐간 숫자의 합이 가장 큰 경우를 찾아보려고 합니다. 아래 칸으로 이동할 때는 대각선 방향으로 한 칸 오른쪽 또는 왼쪽으로만 이동 가능합니다. 예를 들어 3에서는 그 아래칸의 8 또는 1로만 이동이 가능합니다. 삼각형의 정보가 담긴 배열 triangle이 매개변수로 주어질 때, 거쳐간 숫자의 최댓값을 return 하도록 solution 함수를 완성하세요. 제..

가장 큰 수 (프로그래머스) [JAVA]
알고리즘/문제풀이 2020. 8. 18. 05:16

문제 문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/42746 코딩테스트 연습 - 가장 큰 수 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 �� programmers.co.kr 문제 설명 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 수는 6210입니..

7. 정렬 (2) - 합병 정렬, 힙 정렬, 쉘 정렬
알고리즘/스터디 2020. 8. 18. 01:37

합병 정렬 폰 노이만에 의해 만들어진 정렬 방법이다. 분할 정복(Divide and Conquer)를 이용한 정렬 방법으로, 문제를 작은 문제로 나누고 각각을 해결한 다음, 그 결과로 큰 문제를 해결하는 방법이다. 합병 정렬(Merge Sort)은 3가지 과정으로 구성된다. 분할(Divide) = 배열을 같은 크기의 배열 두개로 분할한다 정복(Conquer) = 이 두 개의 배열을 정렬한다. (크기가 아직 크면 순환 호출로 다시 분할) 결합(Combine) = 배열들을 다시 합치면서 원래의 정렬된 배열로 만든다. 코드 //머지소트 c++ 코드 void MergeSort(int sort[], int data[], int first, int last) { int mid; //1개 남았을때는 멈추게 if (f..

도전과제 14 : 쇼핑 상품 화면 구성하기(Do it 안드로이드 앱 프로그래밍) [JAVA]
코딩/Do it Android [JAVA] 2020. 8. 17. 02:11

도전과제 14 격자 형태로 쇼핑 상품을 보여주는 화면을 구성해 보세요. 격자 형태의 뷰에 보이는 각각의 아이템에는 상품의 이미지와 정보가 표시됩니다. 쇼핑 상품을 보여주는 화면을 리싸이클러뷰로 만듭니다.. 리싸이클러뷰의 칼럼은 두 개로 하고 아이템은 가상의 데이터를 사용해 여러 개 입력해둡니다. 각각의 아이템에는 상품 이미지, 상품 이름, 가격, 간단한 설명이 보일 수 있도록 합니다. 리싸이클러뷰의 한 아이템을 터치했을 때 선택된 상품의 이름과 가격을 토스트로 간단하게 보여줍니다. 참고할 점 상단 버튼은 위쪽과 좌, 우의 연결점을 부모 레이아웃과 연결합니다. 하단 버튼은 아래쪽과 좌, 우의 연결점을 부모 레이아웃과 연결합니다. 가운데 버튼의 위쪽 연결점은 상단 버튼의 아래쪽 연결점과 연결합니다. 가운데 ..

도전과제 13 : 리사이클러뷰에 고객 정보 추가하기 (Do it 안드로이드 앱 프로그래밍) [JAVA]
코딩/Do it Android [JAVA] 2020. 8. 17. 01:40

도전과제 13 사용자가 고객 정보를 간단하게 입력하고 버튼을 누르면 리싸이클러뷰에 추가되도록 해 보세요. 리싸이클러뷰에 하나의 아이템을 추가하는 기능입니다. 고객 정보를 입력할 수 있고 고객 정보 리스트가 표시되는 화면을 만듭니다. 화면의 위쪽에는 각각 이름, 생년월일, 전화번호를 입력할 수 있도록 입력상자 세 개를 만듭니다. 입력상자 아래에는 [추기] 버튼을 만들어서 버튼을 누르면 리싸이클러뷰에 아이템이 추가되도록 합니다. 화면 아래쪽에는 리싸이클러뷰를 표시합니다. 리싸이클러뷰에 들어가는 각각의 아이템은 고객 정보를 표시하며 아이콘, 이름, 생년월일, 전화번호가 표시되도록 합니다. 참고할 점 리싸이클러뷰에 새로 추가된 아이템을 보여주기 위해서는 리싸이클러뷰의 데이터를 관리하는 어댑터에 아이템을 추가해야..

도전과제 11,12 : 서비스에서 수신자로 메시지 보내기 (Do it 안드로이드 앱 프로그래밍) [JAVA]
코딩/Do it Android [JAVA] 2020. 8. 16. 01:45

도전과제 11,12 서비스에서 보낸 메시지를 액티비티 안에서 등록한 브로드캐스트 수신자를 이용해 받도록 만들어 보세요 화면에 버튼 하나와 입력상자 그리고 텍스트뷰를 배치합니다. 버튼을 누르면 입력상자의 글자를 가져와 서비스를 실행하면서 보내줍니다. 서비스에는 다시 브로드캐스팅을 이용해 글자를 보내줍니다. MainActivity 화면에서는 브로드캐스트 수신자를 통해 글자를 전달받습니다. 수신자를 통해 전달받은 글자를 화면에 있는 텍스트뷰에 표시합니다. 참고할점 액티비티 안에서 브로드캐스트 수신자를 등록할 수 있습니다. 액티비티 안의 수신자에서 메시지를 수신하면 그 메시지를 액티비티 안의 텍스트뷰에 표시할 수 있습니다. 풀이 레이아웃은 단순하게 EditText로 메세지를 보내면, 밑에 TextView에 각각..