전체 글 40

Do it 안드로이드 앱 프로그래밍 - 3) 이벤트와 리스트뷰

이벤트 : 터치이벤트 , 키 이벤트 1) 터치 이벤트 : 가장 多사용 ( 손가락으로 누를 때, 누른 상태에서 움직일 때, 누른 상태에서 뗄 때=>구분은 getAction메소드를 통해 가능) 터치했을 때 발생하는 이벤트 : MotionEvent public boolean onTouch(View view, MotionEvent motionEvent) { int action = motionEvent.getAction(); if (action == MotionEvent.ACTION_DOWN) { println("손가락 눌림."); } else if (action == MotionEvent.ACTION_MOVE) { println("손가락 움직임."); } else if (action == MotionEvent...

Android Studio 2021.03.06

Do it 안드로이드 앱 프로그래밍 - 2) 레이아웃

레이아웃 1) 제약 레이아웃(Constraint) : 디폴트 레이아웃 2) 리니어 레이아웃(Linear) : 한 쪽 방향으로 차례대로 뷰를 추가하며 화면을 구성하는 방법( orientation 속성 값=> Horizontal 가로/ Vertical 세로) 3) 상대 레이아웃(Relative) : 부모 컨테이너나 다른 뷰와의 상대적 위치로 화면을 구성하는 방법 4) 프레임 레이아웃(Frame) : 가장 상위에 있는 하나의 뷰/ 뷰 그룹만 보여주는 방법, 여러개의 뷰가 들어가면 중첩하여 쌓음-> 여러개의 뷰를 중첩한 후 각 뷰를 전환하여 보여주는 방식으로 자주 사용 5) 테이블 레이아웃(Table) : 격자 모양의 배열을 사용하여 화면 구성하는 방법 *뷰의 배경색 : XML 레이아웃에서 색상 지정 시 #+색..

Android Studio 2021.03.04

Do it 안드로이드 앱 프로그래밍 - 1) 첫 번째 앱 만들기,뷰

버튼을 눌렀을 때 메세지가 나타나게 하기 - 이벤트처리 1) XML레이아웃 파일의 버튼에 onClick속성 값 넣기(클릭 이벤트를 처리할 함수 이름 입력) --> 함수 이름은 소스 코드(MainActivity.java)에 들어있는 함수 이름 그대로 사용 2) 소스 파일에 이벤트 처리 함수 추가 ex) [activity_main.xml]탭에서 버튼을 누른 상태로 속성 창에서 onClick이라는 속성 값에 onButton1Clicked입력 -> 이 버튼이 클릭되었을 때 onButton1Clicked함수(메서드)가 실행됨 ※안드로이드 스튜디오에서는 코드가 입력되었을 때 필요한 import구문 자동으로 넣을 수 있는 기능 제공 -> file->setting->editor->heneral->Auto import=..

Android Studio 2021.03.03

동적계획법(Dynamic Programming)

DP: 복잡한 문제를 여러문제로 나누고 문제를 해결한 값은 기억했다가 다시 써야할일이 있으면 재사용 => 문제쪼개기 + 메모이제이션 DP의 구현 방법 2가지, 차이점 DP가 사용하는 핵심 기법의 이름은 무엇이고 그것이 어떤 기법인지 설명 더보기 1. 탑다운, 바텀업 / 탑다운: 코드 이해, 작성 쉬움 -) 함수 호출 비용 大, 바텀업보다 느리고 메모리 大 바텀업: 빠르고 메모리 小 -) 코드 작성이 조금 어려움 2. 메모이제이션 / 계산한 소문제의 값을 기록했다가, 똑같은 소문제를 계산해야되는 경우 다시 계산하지 않고 기록한 값을 그대로 활용 ex) 피보나치 수열에서 recurcive함수로 구현했을 때 계산 중복이 多 1)전에 계산한 값 기록했다가 필요하면 다시 계산안하고 그 값 사용(memoizatio..

알고리즘 2021.02.17

1212: 8진수 2진수 -->다시

www.acmicpc.net/problem/1212 1212번: 8진수 2진수 첫째 줄에 8진수가 주어진다. 주어지는 수의 길이는 333,334을 넘지 않는다. www.acmicpc.net 1373과 반대로 풀면 된다. (대신 3자리를 맞춰주기) import java.util.Scanner; public class Main { public static void main(String args[]) { Scanner sc = new Scanner(System.in); String[] s = sc.nextLine().split(""); int[] binary = {0, 1, 10, 11, 100, 101, 110, 111}; for(int i=0; i

1373: 2진수 8진수

www.acmicpc.net/problem/1373 1373번: 2진수 8진수 첫째 줄에 2진수가 주어진다. 주어지는 수의 길이는 1,000,000을 넘지 않는다. www.acmicpc.net 2진수를 뒷자리부터 3자리씩 자르면 8진수로 바꿀 수 있다. 부족한 자리는 0으로 채우고 3자리씩 자른 숫자에 2진수의 자릿값을 곱한 후 더한다. 3자리씩 잘랐을 때 맨앞에 1자리 or 2자리 or 3으로 나누어 떨어지는 경우를 각각 나누어 작성했다. import java.util.*; public class Main{ public static void main(String [] args) { Scanner sc = new Scanner(System.in); String s = sc.nextLine(); int n..

2745: 진법 변환

www.acmicpc.net/problem/2745 2745번: 진법 변환 B진법 수 N이 주어진다. 이 수를 10진법으로 바꿔 출력하는 프로그램을 작성하시오. 10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 www.acmicpc.net 진법 변환2와 반대로 수행하면 된다. import java.util.*; public class Main{ public static void main(String[] args) { Scanner scan = new Scanner(System.in); int ans = 0; String n = scan.next(); int b = scan.nextInt(); for(int i=0; i

11005: 진법 변환 2

www.acmicpc.net/problem/11005 11005번: 진법 변환 2 10진법 수 N이 주어진다. 이 수를 B진법으로 바꿔 출력하는 프로그램을 작성하시오. 10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 www.acmicpc.net 10진법 N을 B진법으로 바꾸려면 N이 0이 될 때까지 나머지 계속 구하여 저장한 후 거꾸로 출력하면 된다. //1 import java.util.*; public class Main { public static StringBuilder change(int n, int b) { StringBuilder sb = new StringBuilder(); while(n>0) { if(n%b < 10) { sb.a..

1850: 최대공약수

www.acmicpc.net/problem/1850 1850번: 최대공약수 모든 자리가 1로만 이루어져있는 두 자연수 A와 B가 주어진다. 이때, A와 B의 최대 공약수를 구하는 프로그램을 작성하시오. 예를 들어, A가 111이고, B가 1111인 경우에 A와 B의 최대공약수는 1이고, A www.acmicpc.net 두 수의 최대공약수만큼 1을 반복하면 되는 문제 그런데 for문을 그냥 System.out.println("1");로 썼더니 시간초과가 발생했다. 그래서 stringbuilder클래스 사용하여 문제를 해결! 더보기 StringBuilder클래스=> 문자열 저장하기위한 메모리 공간有, 문자 추가/삭제 가능 public StringBuilder append(int i) -> 기본 자료형 데이터..