-
fold / foldIndexed 함수, 자료형 정리, 증감연산자Android 2024. 3. 5. 23:51
9:00 ~ 10:00 : 알고리즘 문제 풀기
해당 알고리즘 문제는
absolutes = [4, 7, 12] 이고 signs = [ true, false, false ] 이면 4 + (-7) + (-12) 를 리턴하는 함수를 작성하는 것이다.
여기서 가장 사용하기 좋은 함수는 foldIndexed() 였다.
- fold(초기값 Int)
val res = absolues.fold(0) { sum, element → sum + element } // res = 23
* sum 은 fold의 인자인 초기값 0 이고, element 는 배열의 원소이다.
* sum = 0 + 4 + 7 + 12 = 23 → 즉, sum에 element 값이 합해지는 구조이다.
- foldIndexed(초기값 Int)
val res = absolutes.foldIndexed(0) { idx, sum, element → sum + if(signs[idx]) element else -element } // res = -15
* idx 는 배열의 인덱스, sum 은 초기값 0, element 는 배열의 원소이다.
* sum = 0 + 4 +(-7) +(-12) = -15 이다.
* 배열의 모든 원소가 1 이상 1000 이하라는 조건 코드 : arr.all { it in 1 .. 1000 }
10:00 ~ 11:00 : Zoom 설명회 듣기
- 팀원과의 소통은 매우 중요하다. 팀원과 적극적으로 교류하는 자세를 갖도록 하자.
- 기록은 매우 중요하다 (문제, 시도, 해결, 알게된 점)
- 강의를 본다고 실력이 늘지 않는다! 내 스스로 코드를 쳐보는 연습을 하는게 중요하다.
- 전 일 미달성 학습, 오늘의 학습, 미달성 학습 으로 데일리 스크럼을 나누는 것도 좋다.
- 코드 공유 & 공부 기록 !!!
- 모르는 단어는 키워드 노트로 따로 만들고 나중에 개념 정리를 해보는 것도 좋다.
- 개발자가 되기 위해선 협업 하는 자세, 원활한 커뮤니케이션이 중요하다.
- 구현하는 기술, 스택에 대해 목적과 근거를 가져야한다.
- 질문과 공유
해당 진로쪽으로 나아가려면 커뮤니케이션이 원활해야 한다고 한다.. 앞으로 공부 뿐 아니라 사람들과 계속 소통해볼려고 노력하고, 내 말투가 어떠한지 어떻게 말하는게 상대방에게 잘 전달될 수 있을 지 계속 고민하고 노력해야겠다!
11:00 ~ 13:00 : 코틀린 문법 강의 1-1 ~ 2-1 듣고 따라하기
- RPG 게임(육성형 게임)은 GUI 개발이 필요한데, GUI 없는 RPG 게임을 TextRPG 라고 한다. (콘솔창 기반)
- Java 보다 Kotlin 언어를 안드로이드 개발 언어로 사용하는 이유
- 자료형을 명시하지 않아도 인식 가능하다.
- 코드를 더 간결하게 작성할 수 있다.
- Null 예외를 컴파일 시점에서 미리 방지할 수 있다. ( = Null 처리에 높은 안정성을 지닌다.)
- Java 언어로 작성했을 때보다 앱이 다운될 가능성이 20% 낮아진다.
- 프로젝트 위치 확인법 : Project 우클릭 > Open In > Explorer
- 유용한 단축키(윈도우 기준)
- 라인 지우기 : ctrl + Y
- 주석 처리 : ctrl + /
- 자동 포커싱 : Esc
- 전체 찾기 : ctrl + shift + F
- 코드 맨앞 이동 : Home / 코드 맨뒤 이동 : End
- (Android 아니고 그냥 일반 윈도우 !!!) 프로그램 강제 종료 : ctrl + shift + Esc > 마우스 우클릭 > 작업 끝내기
- 변수 이름 지정
- 변수, 메소드 : camelCase
- 상수 : snake_case
- 클래스 : PascalCase
- readLine() 과 readLine()!!.toInt() → 입력값을 사용자로부터 받아올 때 사용
- readLine() : String 을 받아오는 경우
- readLine()!!.toInt() : 정수를 받아오는 경우 → 입력값 12 를 받더라도 컴퓨터는 문자열 "12"로 인식해서 Int 로 바꿔야 한다.
14:00 ~ 15:10 : Zoom 학습법 특강
15:20 ~ 18:00 : 코틀린 문법 강의 2-2 ~ 2-8 강의 듣고 따라하기
- 데이터의 자료형 : 컴퓨터의 하드웨어 사양은 한정적이기 때문에 적절한 자료형을 써야한다. 예) 32비트만 써도 되는데 64비트 자료형을 쓰면 메모리 낭비가 발생한다!
- 하지만, 작은 크기의 자료형은 오버플로우 현상을 발생시킬 수 있다 → 만약 Int 형에서 입력값이 Int 형이 최대로 담을 수 있는 크기보다 클 경우 Long 형으로 바꿔줘야 한다.
자료형 크기 특징 Long 64 비트 정수 Int 32 비트 정수 Short 16 비트 정수 Byte 8 비트 정수 Double 64 비트 실수 Float 32 비트 실수 Char 16 비트 한 문자 Boolean 8비트 논리(참 또는 거짓) String 없음 문자열 - 증감 연산자
- 후위 연산자 : 값을 출력한 후에 연산한다 ex) a=10 일 때, println(a++) = 10
- 전위 연산자 : 값을 출력하기 전에 연산한다. ex) a = 10일 때, println(++a) = 11
- when 절은 if ~ else 문보다 더 간결하게 작성되는 경우가 많아 코딩 컨벤션에 더 적합하다.
- 가장 가까운 반복문을 탈출하기 위해서는 break 를 써야 한다. continue 는 이후의 코드를 실행하지 않는다.
19:00 ~ 20 : 30 : 코틀린 문법 강의 2-9 ~ 3-2 듣고 따라하기
- 메소드 : 함수 (fun)
- Unit : 반환하는 값이 없다 ex) fun solution(Int: a, Int: b) : Unit { } → 보통 생략해서 많이 쓴다.
- 프로그램의 시작점은 main 함수이다. → fun main() { }
- 객체지향 프로그래밍
- 코틀린은 모든 것이 클래스 형태로, 객체화가 가능하다
- 5대 키워드 : 클래스, 추상화, 캡슐화, 상속, 다형성
- 클래스
- 프로그램의 설계도이다.
- 정보(프로퍼티), 행위(메소드)가 존재한다. → 정보는 보통 변수와 상수를 말하고, 행위는 함수를 말한다.
- 보통 하나의 파일에 하나의 클래스를 선언하지만, 하나의 파일에 여러 클래스가 들어가는 경우도 있다.
- 고급 클래스 : 데이터 클래스, 실드 클래스(sealed class), 오브젝트 클래스, 열거 클래스(enum class)
- 새로운 클래스를 만들 때는 자료형을 명시해야 한다.
느낀점
오늘부터 코틀린 기초 문법 강의주차가 시작되었는데, 전에 학교에서 배웠던 기초 문법 내용이 많이 겹쳐서 좀 아쉽기도 했지만, 잘 알지 못하거나 애매하게 알았던 부분을 다시 한번 정리해볼 수 있어서 좋았다! 남은 기간 동안 꾸준히 열심히 할 수 있도록 하고, 팀원들과 소통도 잘 되었으면 좋겠다!
'Android' 카테고리의 다른 글
접근 제한자,지연 초기화, 널 세이프티 (0) 2024.03.07 생성자, 상속, 인터페이스, 오버라이딩, 오버로딩 (2) 2024.03.06 2024-03-04 BOOTCAMP TIL (3) 2024.03.04 2024/02/29 BOOTCAMP TIL (1) 2024.02.29 2024/02/28 BOOTCAMP TIL (7) 2024.02.28