도전과제 10 : 기본 앱 화면 구성 (Do it 안드로이드 앱 프로그래밍) [JAVA]
코딩/Do it Android [JAVA] 2020. 8. 15. 16:20

도전과제 10 바로가기 메뉴와 하단 탭 그리고 뷰페이저가 들어간 기본 앱 화면을 만들어 보세요. 앱의 화면에 바로가기 메뉴와 하단 탭 그리고 뷰페이저가 들어가도록 만들어 보세요. 하단 탭에는 세 개의 탭 메뉴가 보이도록 합니다. 하단 탭에서 첫 번째 탭을 눌렀을 때 보이는 첫 번째 프래그먼트 화면 안에 뷰페이저가 표시되도록 합니다. 그리고 뷰페이저 안에는 이미지나 기타 화면이 2~3개 들어가 있도록 만듭니다. 바로가기 메뉴를 넣어줍니다. 참고할 점 바로가기 메뉴, 하단 탭, 뷰페이저 등이 포함된 구조를 가지는 앱이 많으니 이 위젯들을 모두 포함하는 기본 앱 구조를 만들어 보는 것이 좋습니다. 풀이 res/layout 폴더에 activity_main과 함께 세 개의 프래그먼트와, 프래그먼트 메인, 그리고 ..

징검다리 건너기 (프로그래머스) [JAVA]
알고리즘/문제풀이 2020. 8. 14. 23:38

문제 문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/64062 [본 문제는 정확성과 효율성 테스트 각각 점수가 있는 문제입니다.] 카카오 초등학교의 니니즈 친구들이 라이언 선생님과 함께 가을 소풍을 가는 중에 징검다리가 있는 개울을 만나서 건너편으로 건너려고 합니다. 라이언 선생님은 니니즈 친구들이 무사히 징검다리를 건널 수 있도록 다음과 같이 규칙을 만들었습니다. 징검다리는 일렬로 놓여 있고 각 징검다리의 디딤돌에는 모두 숫자가 적혀 있으며 디딤돌의 숫자는 한 번 밟을 때마다 1씩 줄어듭니다. 디딤돌의 숫자가 0이 되면 더 이상 밟을 수 없으며 이때는 그 다음 디딤돌로 한번에 여러 칸을 건너 뛸 수 있습니다. 단, 다음으로 밟을 수 있는 디딤돌..

체육복 (프로그래머스) [JAVA]
알고리즘/문제풀이 2020. 8. 14. 01:17

문제 점심시간에 도둑이 들어, 일부 학생이 체육복을 도난당했습니다. 다행히 여벌 체육복이 있는 학생이 이들에게 체육복을 빌려주려 합니다. 학생들의 번호는 체격 순으로 매겨져 있어, 바로 앞번호의 학생이나 바로 뒷번호의 학생에게만 체육복을 빌려줄 수 있습니다. 예를 들어, 4번 학생은 3번 학생이나 5번 학생에게만 체육복을 빌려줄 수 있습니다. 체육복이 없으면 수업을 들을 수 없기 때문에 체육복을 적절히 빌려 최대한 많은 학생이 체육수업을 들어야 합니다. 전체 학생의 수 n, 체육복을 도난당한 학생들의 번호가 담긴 배열 lost, 여벌의 체육복을 가져온 학생들의 번호가 담긴 배열 reserve가 매개변수로 주어질 때, 체육수업을 들을 수 있는 학생의 최댓값을 return 하도록 solution 함수를 작성..

6. 정렬 (1) - 삽입 정렬, 버블 정렬, 퀵 정렬
알고리즘/스터디 2020. 8. 12. 02:50

삽입 정렬 모든 요소를 앞에서부터 차례대로 정렬된 부분과 비교하여 위치를 찾아 삽입하는 방법. void InsertionSort(int[] data){//삽입정렬 for (int i = 1; i = 0; j--) { //앞에 정렬되어 있는 부분에서 해당하는 위치를 찾아 삽입 if (data[j] > key) { data[j + 1] = data[j]; //한칸 옆으로 이동 } else { break; } } data[j + 1] = key; } } 시간복잡도 BestCase : 이미 정렬된 경우 -> 이동 없이 각각 1번의 비교씩 $O(N)$ WorstCase : 입력 자료가 역순인 경우 등 (마지막이 4 3..

도전과제 09 :고객 정보 입력화면의 구성 (Do it 안드로이드 앱 프로그래밍) [JAVA]
코딩/Do it Android [JAVA] 2020. 8. 10. 02:00

도전과제 09 고객 정보 입력 화면을 프래그먼트로 만들어 보세요. 이 화면은 고객의 이름, 나이, 생년월일을 입력받기 위한 것입니다. 프래그먼트로 고객 정보 입력 화면을 만들어 액티비티에 넣어줍니다. 프래그먼트의 레이아웃에는 리니어 레이아웃이나 상대 레이아웃을 사용하고 그 안에 이름과 나이를 입력받는 입력상자, 생년월일을 표시하는 버튼 그리고 [저장] 버튼을 배치합니다. 생년월일을 표시하는 버튼에는 오늘 날짜를 자동으로 표시하며, 버튼을 누르면 [날짜 선택] 대화상자를 띄우고 날짜를 입력받아 표시합니다. 이름을 넣을 수 있는 입력상자에는 문자열을, 나이를 입력받기 위한 입력상자에는 숫자를 입력할 수 있도록 설정하여 적당한 키패드를 띄우도록 하고 나이는 세 자리까지만 입력할 수 있게 만듭니다. [저장] 버..

도전과제 07,08 : 세 개 이상의 화면 만들어 전환하기 (Do it 안드로이드 앱 프로그래밍) [JAVA]
코딩/Do it Android [JAVA] 2020. 8. 9. 02:06

도전과제 07,08 앱에서 사용될 수 있는 여러 화면을 구성하고 각 화면을 전환하면서 토스트로 메시지를 띄워주도록 만들어 보세요. 로그인 화면과 메뉴화면 그리고 세 개의 서브 화면(고객 관리 화면, 매출 관리 화면, 상품 관리 화면)을 각각 액티비티로 만듭니다. 로그인 화면에는 두 개의 입력상자와 하나의 버튼이 들어가도록 합니다. 메뉴 화면에는 세 개의 버튼이 들어가도록 하고 각각 '고객 관리', '매출 관리', '상품 관리' 라는 이름으로 표시 합니다. 로그인 화면의 [로그인] 버튼을 누르면 메뉴 화면으로 이동합니다. 만약 사용자 이름이나 비밀번호가 입력되어 있지 않은 상태에서 [로그인] 버튼을 누르면 토스트로 입력하라는 메시지를 보여주고 대기합니다. 메뉴 화면의 버튼 중에서 하나를 누르면 해당 서브 ..

비밀지도 (프로그래머스) [JAVA]
알고리즘/문제풀이 2020. 8. 6. 17:28

문제 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다행히 지도 암호를 해독할 방법을 적어놓은 메모도 함께 발견했다. 지도는 한 변의 길이가 n인 정사각형 배열 형태로, 각 칸은 공백(" ) 또는벽(#") 두 종류로 이루어져 있다. 전체 지도는 두 장의 지도를 겹쳐서 얻을 수 있다. 각각 지도 1과 지도 2라고 하자. 지도 1 또는 지도 2 중 어느 하나라도 벽인 부분은 전체 지도에서도 벽이다. 지도 1과 지도 2에서 모두 공백인 부분은 전체 지도에서도 공백이다. 지도 1과 지도 2는 각각 정수 배열로 암호화되어 있다. 암호화된 배열은 지도의 각 가로줄에서 벽 부분을 1, 공백 부..

다음 큰 숫자 (프로그래머스) [JAVA]
알고리즘/문제풀이 2020. 8. 6. 17:00

문제 문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/12911 문제 설명 자연수 n이 주어졌을 때, n의 다음 큰 숫자는 다음과 같이 정의 합니다. 조건 1. n의 다음 큰 숫자는 n보다 큰 자연수 입니다. 조건 2. n의 다음 큰 숫자와 n은 2진수로 변환했을 때 1의 갯수가 같습니다. 조건 3. n의 다음 큰 숫자는 조건 1, 2를 만족하는 수 중 가장 작은 수 입니다. 예를 들어서 78(1001110)의 다음 큰 숫자는 83(1010011)입니다. 자연수 n이 매개변수로 주어질 때, n의 다음 큰 숫자를 return 하는 solution 함수를 완성해주세요. 제한 사항 n은 1,000,000 이하의 자연수 입니다. 입출력 예 n result..

5. 재귀 호출 - 완전 탐색, 동적 프로그래밍
알고리즘/스터디 2020. 7. 31. 23:30

완전 탐색 완전 탐색은 모든 경우의 수를 다 해보는 것으로 Brute Force라고도 한다. 컴퓨터의 빠른 계산 능력을 이용하여 모든 경우의 수를 해보지만, 시간 역시 최대로 소모된다. for문을 사용하여 정말 모든 경우를 탐색하는 방법과, 재귀, DFS/BFS/ 백트래킹, 비트마스크 등이 존재한다. 위와 같은 방법들을 간단하게 소개하도록 하겠다. 재귀 호출 - 어느 함수가 자기 자신을 다시 참조하는 방법이다. $f(n) = f(n-1) + f(n-2)$ 등의 피보나치 수열, $n! = (n-1)! * n$ 과 같은 팩토리얼 연산 등에서 자주 등장한다. 하지만 재귀함수는 잘못 사용하면 복잡도가 어마어마하고, 함수가 끝날 때까지 자기 자신 호출 이후의 명령문이 수행되지 않는다. 또한 반드시 종료조건이 있어..

4. 비트 조작 - 비트 연산자, 비트 함수
알고리즘/스터디 2020. 7. 31. 23:04

비트 조작 비트(bit)는 Binary Digit를 줄인 말로 데이터를 나타내는 최소 단위이다. 0과 1 두 값 중 하나를 가질 수 있다. 8bit가 모여서 1Byte가 되며 이후 단위들은 아래와 같다. 접두어(SI) 이름 계산법 접두어(IEC) 이름 계산법 킬로($10^3$) 1킬로바이트(kilobyte)/kB 1000B=1kB 키비($2^{10}$) 1키비바이트(kibibyte)/KiB 1024B=1KiB 메가($10^6$) 1메가바이트(megabyte)/MB 1000KB=1MB 메비($2^{20}$) 1메비바이트(mebibyte)/MiB 1024KiB=1MiB 기가($10^9$) 1기가바이트(gigabyte)/GB 1000MB=1GB 기비($2^{30}$) 1기비바이트(gibibyte)/GiB 10..