분류 전체보기 613

[시뮬레이션] 연산자 끼워넣기

백준 14888번 연산자 끼워넣기 (삼성 SW역량테스트 기출)https://www.acmicpc.net/problem/14888 import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { static int N; static int[] a; static int[] operator = new int[4]; static int maxValue = Integer.MIN_VALUE; static int minValue = Integer.MAX_VALUE; public static void main(String[] args) throws Exception{ Bu..

[시뮬레이션] 로봇청소기

백준 14503번 로봇청소기 (삼성 SW역량테스트 기출)https://www.acmicpc.net/problem/14503 import javax.swing.text.Position; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { static int N; static int M; static int dir; static int[][] map; static int cleanCount =0; static int[] rotate = {3, 2, 1, 0}; public static void main(String[] args) throws Exce..

Facebook Auth에서 이메일정보를 반환하지 않을 때

Problem//페이스북에서 이름과 이메일 정보를 얻어낸다. override fun requestFacebookProfile(loginResult: LoginResult) { val request = GraphRequest.newMeRequest(loginResult.accessToken) { obj, response -> try { val email = obj.getString("email").toString() requestToken(loginResult, email) } catch (e: Exception) { Log.d("SSS", "requestFacebookProfile(): $e" ) view.showToast(R.string.intro_network) } } val parameters = ..

Google로그인 Debug에서는 되고 플레이스토어에 Release 했을 때 안되는 현상

Google Auth Debug에서는 되고 플레이스토어에 Release 했을 때 안되는 현상 Firebase의 SHA1을 콘솔에 있는 걸로 바꿔줘야 한다.(원래는 Gradle - android - signingReport에 있던 것 사용) 1. 앱서명 누른다음, SHA-1복사 1. SHA-1 바꿔넣음.2. google-services.json 새로 받아서 앱에 덮어씌움3. 플레이스토어에 업로드 SHA키 여러개 넣을 수 있다.(debug랑 release동시에 넣어두면 된다)

뷰(View)가 그려지는 과정

안드로이드에서의 액티비티가 포커스를 얻으면, 자신의 레이아웃을 그리도록 요청한다. 이때 액티비티에 레이아웃의 계층구조 중 루트(root) 노드를 제공해야 한다. override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(com.empo.android.empoapp.R.layout.activity_main) } 뷰를 그리는 과정은 측정(Measure), 레이아웃(Layout) 단계가 있다. 측정(Measure) 과정 - 뷰의 크기를 구한다 public final void measure (int widthMeasureSpec, int heightMeasureSpec) measure()..

[시뮬레이션] 주사위 굴리기

백준 14499번 주사위굴리기 (삼성 SW역량테스트 기출)https://www.acmicpc.net/problem/14499 import javax.swing.text.Position; import java.util.Scanner; public class Main { static int N; static int M; static int[][] map; static Position pos; static int K; static int[] dice = new int[7]; //1~4 static int[] dn = {0, 0, 0, -1, 1}; static int[] dm = {0, 1, -1, 0, 0}; public static void main(String[] args){ Scanner sc = ne..

Handler 구현

Handler 기본 생성자를 통해 Handler를 생성하면, 생성되는 Handler는 해당 Handler를 호출한 위치의 스레드의 MessageQueue와 Looper에 자동 연결된다. 1. 메인 스레드가 기본적으로 루퍼를 가지고 있다. 2. 메인스레드에 있는 루퍼는 static 변수로 정의되어 있다. 3. 따라서 어느 쓰레드에서 handler를 부르던 메인스레드에 있는 루퍼 객체를 참조한다. 4. 메인스레드가 아닌 스레드에서는 안드로이드 화면에 그리는 것이 불가능 하기 때문에 핸들러를 사용하는 것이며, 핸들러를 통해 전달된 메세지는 루퍼의 메세지 큐에 저장된다. class MainActivity : AppCompatActivity() { var count = 0 override fun onCreate(..

스레드 구현방법 (Thread클래스 상속, Runnable인터페이스 구현)

스레드를 구현하는 두가지 방법 1. Thread클래스를 상속(extends) -> run() 오버라이드 2. Runnable인터페이스 구현(implements) -> run() 구현 1. Thread클래스 상속하는 방법class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val testThread = TestThread() testThread.start() } } class TestThread: Thread(){ override fun run() { Log...

핸들러(Handler), 루퍼(Looper), 메시지큐(Message Queue)

Handler스레드 간의 통신장치 1. Looper로부터 받은 Message를 처리한다. 2. 다른 스레드로부터 메시지를 받아서 Message Queue에 넣는 역할을 한다. - Handler는 스레드의 Message Queue와 연계하여 Message나 Runnable객체를 받거나 처리하여 스레드 간의 통신을 할 수 있도록 한다. - Handler 객체는 하나의 스레드와, 해당 스레드의 Message Queue에 종속된다. - 새로 Handler 객체를 만든 경우 이를 만든 스레드와 해당 스레드의 Message Queue에 바인드된다. - 다른 스레드의 속한 Handler의 post나 sendMessage 등의 메서드를 호출해서 다른 스레드로 메시지를 전달 할 수 있다. - Message Queue는 ..

[시뮬레이션] 뱀

백준 3190 뱀 (삼성 SW역량테스트 기출)https://www.acmicpc.net/problem/3190 import javax.swing.text.Position; import java.util.LinkedList; import java.util.Queue; import java.util.Scanner; public class Main { static int N; static int K; //사과의 개수 static int L; //이동명령어 static int[][] map; static Queue body = new LinkedList(); static int dir = 1; static int count = 0; //뱀의 현재위치 static Position p; static int[] dn..

프로세스(process)와 스레드(thread)의 차이

프로그램(program)어떤 작업을 위해 실행할 수 있는 파일 프로세스(process)컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램메모리에 올라와 실행되고 있는 프로그램의 인스턴스(독립적인 개체)운영체제로부터 시스템 자원을 할당받는 단위 -프로세스는 각각 독립된 메모리영역 (Code, Data, Stack, Heap구조)를 할당받는다. -프로세스는 최소 1개의 스레드(메인스레드)를 가진다. -각 프로세스는 별도의 주소 공간에서 실행되며, 한 프로세스는 다른 프로세스의 변수나 자료구조에 접근할 수 없다.접근하려면 프로세스 간 통신(IPC, inter process communication)을 사용해야 한다.ex)파이프, 파일, 소켓 등 스레드(thread)프로세스 내 실행되는 여러 흐름의 단위프로세스..

기타 2019.03.25

Service(unbind, bind)

Service(unbind, bind) Unbound Service startService()를 통해 시작된 서비스는 한번 시작되면 백그라운드에서 무한정 실행될수 있다. 서비스를 시작한 액티비티가 소멸되어도 동작한다.그러나 이렇게 시작한 서비스는 호출한 쪽에 어떠한 결과를 반환할수 없다. 이를 Unbound Service라고 한다. bound ServicestartService() 메소드 대신 bindService() 메소드를 통해 시작되는 서비스를 서비스 바인딩 (Service Bind 혹은 Bound Service)이라 한다.- 이 서비스는 마치 클라이언트-서버 와 같이 동작한다. 서비스가 서버 역할. - 액티비티는 서비스에 어떠한 요청을 할수 있고, 서비스로부터 어떠한 결과를 받을수 있다. - 프로..

AIDL(Android Interface Definition Language)

안드로이드 인터페이스 정의 언어 (AIDL) Service다루는 방법 1 startService() / stopService() 를 이용해서, 특정 Service 를 시작 하거나 종료. Service다루는 방법 2 bindService()를 이용해서, Service 의 IBinder 객체를 얻어온 후, 해당 Service 에서 정의된 API 를 호출 - API호출방법1 - local serviceService와 Service를 이용하는 어플리케이션이 항상 동일한 Process 에서 작동하는 경우에 해당. 이 경우 bindService() 의 결과로 바로 해당 Service 에 접근해서 원하는 API 를 호출할 수 있다. - API호출방법2 -Remote Service실재로 Service가 돌고 있는 Pr..

[BFS] 아기상어 뚜루루뚜루

백준 16236 아기상어 (삼성 SW 역량테스트 기출)https://www.acmicpc.net/problem/16236 package 아기상어; import java.util.*; public class Main { static int N; static int[][] map; static List fishs = new ArrayList(); //상,좌,우,하 순서로 탐색(부질없음) static int[] dn = {-1, 0, 0, 1}; static int[] dm = {0, -1, 1, 0}; static int shark=2; static int stomach=0; static Position p; public static void main(String[] args){ Scanner sc = ne..