Array
·
개발/자료구조
Array는 동일한 자료형을 가진 데이터들을 메모리에 순차적이고 연속적으로 저장하는 자료구조입니다. Array 특징Random Access방식으로 데이터 조회의 시간 복잡도가 O(1)정적 메모리 할당 방식컴파일 타임에 배열의 크기를 미리 할당고정된 크기의 공간을 가짐미리 공간을 할당하기 때문에 메모리 낭비 및 오버플로우 발생 Array 장단점[장점]데이터 조회가 빠름 [단점]메모리 낭비 및 오버플로우가 발생 시간 복잡도 ArrayaccessO(1)  Q. Array Size 넘어서 Data를 저장하려고 할 때 어떤 방법이 있을까요?Dynamic Array를 활용하여 기존 Size보다 큰 Array를 선언하고 데이터를 옮김Linked List를 활용하여 데이터가 추가될 때마다 메모리 공간 할당-> 즉, L..
[Android] MVVM 패턴이란? (+AAC)
·
개발/Android
이번에는 안드로이드에서 사용하는 디자인 패턴 중 MVVM 패턴에 대해서 알아보자. 1. 좋은 코드란? 좋은 코드란 무엇일까. 가독성? 간결함? 등 여러 의견들이 나올 수 있지만 디자인 패턴에서의 좋은 코드는 의미가 다르다. 디자인 패턴에서는 설계적 관점에서의 좋은 코드를 의미한다. 확장과 수정에 용이하고 또 유지보수에 비용이 적게 들어가는 코드가 좋은 코드라 할 수 있다. 예를 들어, 어떠한 요구 사항대로 코드를 수정해야하는 상황이 생기거나, 개발을 진행하는 중에 한 부분이 잘못되어 수정해야하는 상황이라면 한 부분을 수정하기 위해 다른 부분을 수정해야하고, 또 그 부분을 수정하면 다른 부분을 수정해야하는 구조라면 수정해야 할 부분이 많아진다. 이러한 코드는 디자인 패턴의 설계적 관점으로 봤을 때 좋은 코..
슬립나우 개인정보처리방침
·
기타
(' https://iamjm29.tistory.com/'이하 '슬립나우')은(는) 「개인정보 보호법」 제30조에 따라 정보주체의 개인정보를 보호하고 이와 관련한 고충을 신속하고 원활하게 처리할 수 있도록 하기 위하여 다음과 같이 개인정보 처리방침을 수립·공개합니다. ○ 이 개인정보처리방침은 2022년 1월 9부터 적용됩니다. 제1조(개인정보의 처리 목적) (' https://iamjm29.tistory.com/'이하 '슬립나우')은(는) 다음의 목적을 위하여 개인정보를 처리합니다. 처리하고 있는 개인정보는 다음의 목적 이외의 용도로는 이용되지 않으며 이용 목적이 변경되는 경우에는 「개인정보 보호법」 제18조에 따라 별도의 동의를 받는 등 필요한 조치를 이행할 예정입니다. 제2조..
[Kotlin & Android] 코틀린 나누기 소수점
·
개발/Kotlin & Android
코틀린언어에서 소수점 표현은 어떻게 되며, 소수점 자리수 표현은 어떻게 하는지 알아보자. 1. 나눗셈 코틀린에서 정수 값 두 개를 나누게 되면 몫에 소수점 표현이 안된다. var result = 10 / 4 // result: 2 소수점을 표현하기 위해선 두 정수 중 하나를 실수형으로 만든다. var result = 10.0 / 4 // result: 2.5 2. 소수점 자리수 소수점 2자리까지 표현하고 싶을 땐 어떻게 하면 될까? var result = String.format("%.2f", 10.0 / 4) // result: 2.50 이렇게 하면된다. var result = String.format("%.2f", 10.0 / 6) // result: 1.67 반올림도 된다.
[Android] TimePicker 텍스트, 구분선 색상 변경 (Spinner)
·
개발/Android
TimePicker의 스피너 모드에서 텍스트와 구분선의 색상을 변경해보겠다. 1. 테마 선언 TimePicker을 xml 내에서 바로 색상변경이 불가능하다. 그래서 theme으로 스타일을 지정해준 뒤 사용을 해야한다. res/values/themes/themes.xml 파일에 style을 추가해준다. colorControlNormal, textColorPrimary에 원하는 색상코드를 넣어주면 된다. 2. theme 적용 TimePicker에 theme을 추가하여 style을 적용해준다. 3. 결과 잘 적용된 것을 확인할 수 있다. themes.xml 에 style을 적용해서 TimePicker에 색상을 적용시켜보았다. 왜 TimePicker에서 직접 색상을 적용할 수 있도록 지원을 안하는걸까?
[Kotlin & Android] SimpleDateFormat 형식 문제 해결 (TimeZone)
·
개발/Kotlin & Android
애뮬레이터에서 SimpleDateFormat 을 사용하여 날짜 형식을 출력했을 때, 원하는 값이 나왔다. 그런데, 내 폰으로 빌드해서 출력했을 땐 날짜가 다르게 출력되는 것이였다. 어떤 문제였는지 알아보자. 1. 문제 var dateFormat = SimpleDateFormat("hh:mm a") var time = dateFormat.format(totalMs) 밀리초를 date형식으로 변환하고자 하였다. 애뮬레이터에서는 오후3시가 출력되었고, 휴대폰으로 직접 빌드를 해보니 오전 1시가 출력되었다. 처음으로, 날짜 형식에 문제가 있나? 생각하고 패턴을 다시 확인해보았다. Letter Date or Time Component Presentation Examples y 년 Year 1996; 96 M 월 ..
[Android] API KEY 관리
·
개발/Android
REST API, 구글 카카오 API 등 서버 통신을 하다보면 API KEY를 코드상에 적어야 할 때가 있다. 하지만 깃허브로 코드 관리 시 API KEY가 다른 사람들에게 노출될 수 있다. 어떤 방법으로 API KEY를 관리할 수 있을까? 1. .gitignore 파일 확인 .gradle /build local.properties 깃허브를 사용하면 .gitignore 파일이 있을 것이다. 해당 파일에 위 3줄이 있는지 확인한다. 없으면 추가해준다. 우리는 local.properties 파일에 API KEY를 선언해 줄 것이고, BuildConfig가 존재하는 /build 경로도 사용할 것이다. 그러므로, 해당 파일 경로들을 git에 올리지 않도록 막아주는 것이다. 2. local.properties에 ..
[Android] 이미지 색상 코드 찾기
·
개발/Android
안드로이드 개발 중 이미지의 색상 코드를 찾고싶을 때 방법을 정리해보겠다. 1. 이미지 캡쳐 캡처 도구를 통해 이미지를 캡쳐한다. 2. 그림판 그림판을 열어 붙여 넣는다. 3. 색 따오기 도구에 색 선택을 눌러 원하는 색을 따온다. 4. 색 편집 색 편집을 누른다. 5. RGB 확인 빨강, 녹색, 파랑의 값을 기억한다. 6. 색상 팔레트 네이버에 색상팔레트 를 검색하여 RGB에 값을 순서대로 입력한 뒤 #F1821E < 해당 코드를 확인하면 된다. 원하는 색의 코드를 확인하고 싶을 때 유용한 방법이다.
[Kotlin & Android] 코틀린 for 문 사용법
·
개발/Kotlin & Android
코틀린에서의 for문은 다른 언어와 다른 부분이 많기 때문에 좀 더 자세히 알아보기 위해 정리를 해보겠다. 1. in, .. for (i in 1..3){ Log.d("MainActivity", "i: $i") } D/MainActivity: i: 1 D/MainActivity: i: 2 D/MainActivity: i: 3 1부터 3까지 순서대로 출력한다. 2. in, until for (i in 1 until 3){ Log.d("MainActivity", "i: $i") } D/MainActivity: i: 1 D/MainActivity: i: 2 ..이 아닌 until을 사용하게 되면 마지막 3은 포함되지 않는다. 3. step for (i in 1..5 step(2)){ Log.d("MainAct..
[Kotlin & Android] 코틀린 전역 변수 선언 (다른 엑티비티 변수 사용하기)
·
개발/Kotlin & Android
개요 다른 Activity 에서 사용되고 있는 변수를 가져와야하는 경우가 있다. 어떤 방법으로 사용할 수 있는지 확인해보자. companion object // SecondActivity Class companion object{ var testValue = "Hi" } 자바의 static 과는 다르게 class 안에 companion object를 선언하여 변수를 내부에 선언한다. 정확히 따지면 static과 companion object는 같다라고 할 수 없다. // MainActivity Log.d("MainActivity", SecondActivity.testValue) 다른 클래스에서 해당 변수를 호출할 수 있다. 마무리 class에 단 하나의 companion object만 존재할 수 있다. ..