전체 글
![코틀린으로 레이아웃 연결하기 (뷰 바인딩)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbAmVe2%2FbtrGu32z5xd%2F7iacSCZ8WHqbNt9rtLufY0%2Fimg.jpg)
코틀린으로 레이아웃 연결하기 (뷰 바인딩)
코틀린의 레이아웃 요소에 접근하기 위해서는 findViewById 함수를 통해 접근하거나 익스텐션으로 접근할 수 있다. 하지만 코틀린 익스텐션은 최신 버전의 안드로이드 스튜디오에서는 사용을 권장하지 않는데 그 이유는 아래와 같다. 코틀린에서만 제공하므로 자바에서 사용하지 못한다. 일부 상황에서 뷰를 찾을 수 없는 오류가 발생할 수 있다. 어디서나 뷰를 호출할 수 있기 때문에 참조로 인해 앱이 강제로 종료될 수 있다. 모듈화를 추천하고 있는데 코틀린 익스텐션을 사용할 경우 다른 모듈에서 뷰에 대한 접근이 불가능하다. findViewById는 뷰의 요소에 접근 하기 위해서는 아래와 같이 각각의 요소에 대한 객체를 만들어 주어야 했다. public class MainActivity extends AppComp..
![안드로이드 컴파일 (JVM, DVM)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcMLNK4%2FbtrGrXCXFSH%2FqKMautft3y8v6rrOupBGEK%2Fimg.png)
안드로이드 컴파일 (JVM, DVM)
안드로이드는 초창기에 사용된 Dalvik 컴파일 방식과 그 이후에 도입된 ART 컴파일 방식 2가지로 나누어 진다. 안드로이드는 개발 언어가 Java로 채택되면서 JVM이 필요 했었는데, 라이센스 문제와 메모리 효율성등의 문제로 안드로이드는 Dalvik VM(=DVM)을 사용하게 됩니다. 그럼 그 라이센스 문제가 뭔데? Java ME를 사용하기 위해서 Sun 회사에게 라이센스 비용을 지불해야하는 문제가 발생했다. (DVM에서 컴파일 과정 중 .class를 .dex로 변환하는 dx 툴은 Java SE를 사용했기 때문에 Java 언어 사용은 문제되지 않았다.) 그럼 라이센스는 알겠는데.. 메모리 효율성은 뭐죠? JVM은 스택 기반 모델로 많은 메모리를 요구하지만 DVM은 레지스터 기반 모델로 적은 메모리에 ..
![[백준 17264] I AM IRONMAN](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmAKc3%2FbtrFVVlmaLH%2FeZpFJeIgy8Hv1TauJTx1k1%2Fimg.png)
[백준 17264] I AM IRONMAN
[문제 해결] 반드시 이기는 경우, 반드시 지는 경우 2가지를 고려해 플레이어 정보를 해쉬맵에 담아 더해주면 된다. 1. 플레이어 이름 다음 L 이면 해쉬맵에 . W이면 담아준다. 2. 해쉬맵에 있는 value 값들을 전부 더 해준다. 1. 만약 졌을 경우 점수가 떨어질 때 0점 밑으로 안떨어지게 해준다. 2. 해쉬맵에 없는 플레이어 이름이 나온다면 점수를 떨군다. (해킹하지 못한 플레이어이므로 반드시 지는 경우) import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.HashMap; import java.util.StringTokenizer; public clas..
![[프로그래머스] 기능개발](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbg2vuB%2FbtrFSYhfNrn%2FCJxPuHxGTawrC0trJZFPgk%2Fimg.png)
[프로그래머스] 기능개발
https://programmers.co.kr/learn/courses/30/lessons/42586 코딩테스트 연습 - 기능개발 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 programmers.co.kr 위 문제를 해결하는 방법은 두 가지가 있습니다. 첫 번째 - 큐 두 번째 - 배열 저는 문제를 빠르게 해결하기 위해 그냥 배열로 풀었습니다. (이게 편하거든요) [완전 탐색] import java.util.*; class Solution { public int[] solution(int[] progresses, int[] speeds) { int comp..
![프로그래머스 타겟 넘버](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWnRgN%2FbtrFOfDqJfF%2FxcpykMV68PWhG54fAk0el0%2Fimg.jpg)
프로그래머스 타겟 넘버
https://programmers.co.kr/learn/courses/30/lessons/43165 코딩테스트 연습 - 타겟 넘버 n개의 음이 아닌 정수들이 있습니다. 이 정수들을 순서를 바꾸지 않고 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 programmers.co.kr DFS (깊이 우선 탐색)을 이용하여 음수 양수의 경우를 고려해 그래프 탐색을 해주면 됩니다. 시작점을 0으로한 dfs 시작 만약 리프 노드가 아니라면 idx+1을 해주고, 현재 노드의 값과 누적 합계를 더한다. 음수 양수 dfs를 돌려준다. 만약 리프 노드이면서 찾으려는 값을 찾았다면 count 값을 증가 한다. dfs가 종료 되고 나면..
![프로그래머스 두 개 뽑아서 더하기](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FddxB1B%2FbtrFPZNqEbp%2FH6ErXE7OSxVZ3SRsljldE0%2Fimg.png)
프로그래머스 두 개 뽑아서 더하기
프로그래머스 두 개 뽑아서 더하기 내가 푼 풀이 import java.util.*; class Solution { public int[] solution(int[] numbers) { Arrays.sort(numbers); ArrayList list = new ArrayList(); for(int i=0; i