본문 바로가기

분류 전체보기

[프로그래머스] 문자열 내 마음대로 정렬하기 (JAVA) 코딩테스트 연습 - 문자열 내 마음대로 정렬하기 | 프로그래머스 (programmers.co.kr) 코딩테스트 연습 - 문자열 내 마음대로 정렬하기 문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 ["sun", "bed", "car"]이고 n이 1이면 각 단어의 인덱 programmers.co.kr import java.util.ArrayList; import java.util.Arrays; import java.util.Collections ; class Solution { public String[] solution(String[] strings, int n) { String[] answ.. 더보기
[프로그래머스]K번째 수(JAVA) 코딩테스트 연습 - K번째수 | 프로그래머스 (programmers.co.kr) 코딩테스트 연습 - K번째수 [1, 5, 2, 6, 3, 7, 4] [[2, 5, 3], [4, 4, 1], [1, 7, 3]] [5, 6, 3] programmers.co.kr import java.util.Arrays; class Solution { public int[] solution(int[] array, int[][] commands) { int[] answer = new int[commands.length]; for(int count=0; count 더보기
[책읽기] 부자의 언어 부 란? 경제적안정, 돈 걱정없이 사는 삶 하루의 시간은 모두 하나의 씨앗이 될 수 있다. - 부를 일구는 정원사 돈문제를 해결해야 다른 중요한 것들에 집중 할 수 있다. 돈과 시간이 없으면 자기 인생을 뜻대로 살아갈 수 없게 된다. 돈으로 해결가능한 사소한 일을 처리하지 못해 끔찍한 문제가 될 수 있다. 거둔것들로 하루하루를 판단하지 말아라. 그날 심은 씨앗으로 판단하라. 미래에 대한 확실한 보상은 '그 어디에도 없다'네. 그럼에도 불구하고 우리는 계속 나아가야하지. 그렇지 않으면 이미 가진 것만 가지고 살 수 밖에 없어. 17p - 인생의 가치는 그 길이에 있지 않다. 우리는 하루하루를 사용하여 인생을 만들어 나간다. 오래 살 수 는 있지만, 그렇다고 꼭 많은걸 얻게되지는 않는다. 철학자 몽테뉴 인생.. 더보기
아키텍처_안드로이드설계+클린아키텍처 안드로이드 설계시 주의점 UI컴포넌트에 많은 코드를 작성하는 우를 범하기 쉽다. 코드량이 많아지고 가독성이 떨어질 수 있다. so, 중요한것은 관심사 분리 액티비티와 프래그먼트의 클래스 의존성을 최소화 하는 것이 좋다. 클린아키텍처 로버트 C 마틴에 의해 만들어진 철학 , 소프트웨어의 관심사를 계층별로 분리하는 SW디자인 철학 Entities - 가장 일반적이고 상위수준의 규칙들을 캡슐화 ex) 데이터 클래스 Usecase - 애플리케이션과 관련된 비지니스 규칙을 포함하고 시스템의 모든 유스케이스 구현체들을 캡슐화 한다. Ex ) Model , Repository, Executor클린아키텍처 Interface Adapter- 액티비티, 프레그먼트, 인텐트전달 , 그리고 데이터에 접근하고 저장하는 데이터베.. 더보기
아키텍처_애플리케이션의 설계 원칙 1. 단일 책임원칙 모든 클래스는 하나의 책임만 가지며, 클래스는 그 책임을 완전히 캡슐화해야 함 2. 개방 - 폐쇄 원칙 소프트웨어가 확장에 대해서는 열려있어야 하고, 수정에 대해서는 닫혀있어야 한다는 원칙 개방 폐쇄 원칙이 잘 적용된 경우 새로운 기능을 추가하거나 기존 기능을 변경하기 용이해진다. 유연성, 재사용성, 유지보수등의 이점이 있음 3. 리스코프 치환원칙 클래서 S가 클래스 T의 자식클래스이라면, 별다른 변경없이 부모 클래스를 자식클래스로 치환 할 수 있어야한다는 원칙 4. 인터케치스 분리원칙 어떤 클래스가 자신이 이용하지 않는 메서드에 의존하지 않아야한다는원칙. 5. 의존 역전 원칙 모듈들을 분리하는 특정 형식을 지칭 상위모듈은 하위모듈에 의존해서는 안된다. 상위 모듈과 하위모듈은 모두 추.. 더보기
[Android] DataBinding 사용하기 데이터 바인딩은 UI를 구성함에 있어 코드상에 반복적인 귀찮은 작업을 해소시켜주는 기능으로 보면 된다. 선언부에 기계적으로 작성해야한 했던 findById() 를 적어도 java파일 안에서 그만 볼수 있으니까 findViewById(R.id.sample_text).apply { text = viewModel.userName } 이런 코드를 layuot을 구성하는 xml파일 안에서 java파일에서 지정해준 해당 위젯의 변수명과 매치시켜주면 된다. 이점은 ? 파일의 단순화, 유지보수의 편리성, 메모리누수 및 nullpoint excention을 방지할수 있다. 1. 빌드환경 - 데이터 바인딩 추가 android { ... dataBinding { enabled = true } } dataBinding요소를 .. 더보기
가로수길 / 애플스토어 이용시 주차 팁 종종 가로수길에 차를 가지고 가는데 여러번 시행착오 끝에 정착한 주차팁을 공유해 보려고 합니당 ​ ​ 먼저 가로수길 메인 거리에 가면 노상 주차공간이 있는데요 !! 여기는 매번 시설관리공단에 전화해서 문의해야지 하고는 아직 못하고 있는데 유료 주차에 대한 공지가 붙어있지도 않고 거주자 우선 구역도 아니고 주차하면 어디선가 어슬렁어슬렁 돈을 받으러 오는 사람은 무슨 이유로 받아가는지, 어디 소속인지도 모르겠더라구요 ( 경미한 사고라도 되면 과연 정상적인 처리가 될지도 모르겠고 저는 못믿겟더라구요 관리는 되고있는 곳인지 ? ) 위치상 편리하긴 하지만, 이러한 의문으로 비추합니다. 내차는 소중하니까요. :) ​ ​ ​ ​ ​ 그래서 찾아낸곳이 공영 주차장 ! http://naver.me/FLBXIiyF 신구스.. 더보기
[Android] Annotation 사용법 및 종류 Java에서는 API의 의도를 애너테이션으로 명시해 결함 탐지에 활용하는 기법이 발달했다고 한다. 애너테이션은 Java표준 정의는 아니여서 FingBugs, Checker Framework 같은 도구에서 제공하는 애너테이션을 사용하거나 직접 선언해야 한다. 하지만 안드로이드 개발 환경인 Intellij IDEA는 별도로 애너테이션 패키지 라이브러리를 IDE에 제공한다. Android 환경은 일반적인 Java 환경보다 잠재적 문제의 소지가 많은데 그 원인중 하나는 성능상 이점을 위해 Enum, EnumSet보다 프리미티브 타입을 사용하는 점이다. (비트 플래그 연산 또는 int 타입 상수 사용; px, dp, color 등의 단위에 별도 타입을 부여하지 않고 사용; R 클래스가 각종 리소스를 int타입 아.. 더보기