ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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 언어를 안드로이드 개발 언어로 사용하는 이유 
      1. 자료형을 명시하지 않아도 인식 가능하다.
      2. 코드를 더 간결하게 작성할 수 있다.
      3. Null 예외를 컴파일 시점에서 미리 방지할 수 있다. ( = Null 처리에 높은 안정성을 지닌다.)
      4. Java 언어로 작성했을 때보다 앱이 다운될 가능성이 20% 낮아진다.
    • 프로젝트 위치 확인법 : Project 우클릭 > Open In > Explorer
    • 유용한 단축키(윈도우 기준)
      1.  라인 지우기 : ctrl + Y
      2.  주석 처리 : ctrl + /
      3.  자동 포커싱 : Esc
      4.  전체 찾기 : ctrl + shift + F
      5.  코드 맨앞 이동 : Home / 코드 맨뒤 이동 : End
      6. (Android 아니고 그냥 일반 윈도우 !!!) 프로그램 강제 종료 : ctrl + shift + Esc > 마우스 우클릭 > 작업 끝내기
    • 변수 이름 지정
      1.  변수, 메소드 : camelCase
      2.  상수 : snake_case
      3.  클래스 : PascalCase
    • readLine() 과 readLine()!!.toInt() → 입력값을 사용자로부터 받아올 때 사용
      1. readLine() : String 을 받아오는 경우
      2. 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 없음 문자열
    • 증감 연산자
      1.  후위 연산자 : 값을 출력한 후에 연산한다 ex) a=10 일 때, println(a++) = 10 
      2.  전위 연산자 : 값을 출력하기 전에 연산한다. 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() { }
    • 객체지향 프로그래밍
      1. 코틀린은 모든 것이 클래스 형태로, 객체화가 가능하다
      2. 5대 키워드 : 클래스, 추상화, 캡슐화, 상속, 다형성
    • 클래스
      1. 프로그램의 설계도이다.
      2. 정보(프로퍼티), 행위(메소드)가 존재한다. → 정보는 보통 변수와 상수를 말하고, 행위는 함수를 말한다.
      3. 보통 하나의 파일에 하나의 클래스를 선언하지만, 하나의 파일에 여러 클래스가 들어가는 경우도 있다.
      4. 고급 클래스 : 데이터 클래스, 실드 클래스(sealed class), 오브젝트 클래스, 열거 클래스(enum class)
      5. 새로운 클래스를 만들 때는 자료형을 명시해야 한다.

    느낀점 

    오늘부터 코틀린 기초 문법 강의주차가 시작되었는데, 전에 학교에서 배웠던 기초 문법 내용이 많이 겹쳐서 좀 아쉽기도 했지만, 잘 알지 못하거나 애매하게 알았던 부분을 다시 한번 정리해볼 수 있어서 좋았다! 남은 기간 동안 꾸준히 열심히 할 수 있도록 하고, 팀원들과 소통도 잘 되었으면 좋겠다!

Designed by Tistory.