코틀린-안드로이드 70

10일차)알고리즘 문제(성격 유형 검사)

>알고리즘 문제 1. 문제나만의 카카오 성격 유형 검사지를 만들려고 합니다.성격 유형 검사는 다음과 같은 4개 지표로 성격 유형을 구분합니다. 성격은 각 지표에서 두 유형 중 하나로 결정됩니다.지표 번호성격 유형1번 지표라이언형(R), 튜브형(T)2번 지표콘형(C), 프로도형(F)3번 지표제이지형(J), 무지형(M)4번 지표어피치형(A), 네오형(N)4개의 지표가 있으므로 성격 유형은 총 16(=2 x 2 x 2 x 2)가지가 나올 수 있습니다. 예를 들어, "RFMN"이나 "TCMA"와 같은 성격 유형이 있습니다.검사지에는 총 n개의 질문이 있고, 각 질문에는 아래와 같은 7개의 선택지가 있습니다.매우 비동의비동의약간 비동의모르겠음약간 동의동의매우 동의각 질문은 1가지 지표로 성격 유형 점수를 판단합니..

9일차)알고리즘 문제(햄버거 만들기), 코드카타 리뷰(collection APIs, Stringbuilder, stack, queue, deque, subList() vs slice()),코틀린 문법(널 안정성)

>알고리즘 문제1. 문제 2. 솔루션class Solution { fun solution(ingredient: IntArray): Int { var answer: Int = 0 var tmp=ingredient.toMutableList() var idx=0 while(idx-처음 풀이 문제점: 처음에는 ingredient의 원소를 문자로 변환해 받아오면서 replace를 이용하여 1231이 완성된 부분문자열을 지우는 식으로 하였으나 시간초과 발생=>해결: 문자로 바꿔서 문자열을 다루는 과정에서 시간초과가 발생하였다고 가정. 처음에 ingredient를 복사하고 인덱스를 이용하여 ingredient의 원소를 살피며 1231이 만들어지는 부분을 찾아 앞..

8일차)알고리즘 문제(둘만의 암호), 코틀린 문법(람다 함수,고차함수)

>알고리즘 문제1. 문제 2. 솔루션class Solution { fun solution(s: String, skip: String, index: Int): String { var answer: String = "" var charList=mutableListOf() //index만큼 넘어갔을때 나오는 알파벳을 찾기위한 리스트 var charMap=mutableMapOf() //skip을 제외한 알파벳 순서 var idx=0 //skip을 제외한 알파벳 순서 정보를 채워넣음 for(i:Char in 'a'..'z'){ if(!skip.contains(i)){ cha..

5일차)알고리즘 문제(체육복,숫자짝꿍), 코틀린 문법

>알고리즘 문제1. MutableList 활용1)선언(주로 쓰는것 위주로)val mulist = MutableList(5, { i -> i})val mulist = mutableListOf(10, 20, 30)val mulist = mutableListOf()2)활용이유: list와는 달리 가변적. 순서대로 사용되는 숫자인덱스가 포함된 문제에서 활용하기 쉬움 2.StringBulilder()1)선언: val sb=StringBuilder()2)사용 이유:-여러번 수정이 필요한 문자열이 있는 경우 StringBuilder를 활용하는것이 실행시간이 아껴짐-append이용시 자료형 상관없이 추가가능3)수정-.append()-.deleteCharAt(index)//인덱스위치의 문자삭제-.delete(start,..

4일차)코틀린 문법 - 4

1.상속(inheritance) 1)의미:클래스 선언시 다른 클래스를 참조해 선언 2)형태:상위 클래스 오픈: open class Super{} //super란 클래스를 상속할 수 있게 오픈함상속: class Sub: Super(){} //sub란 클래스가 super를 상속받음=>이떄 super는 상위클래스, sub는 하위 클래스매개변수가 있는 경우는 Super()에 적어줘야함ex)class Sun(name: String): Super(name){}하위 클래스에 보조생성자만 있는경우:보조 생성자에 매개변수전달ex)class Sub: Super{ constructor(name:String):super(name){}} 3)오버라이딩:상속받은 클래스의 멤버를 재정의할 수 있음open:재정의 하기 위해서는 해당..

3일차) 코틀린 문법-3

클래스와 생성자 1. 클래스 1)선언:  class 클래스명 {}2)구성 멤버: 생성자, 변수, 함수, 클래스=>클래스 내에 클래스 선언 가능3)객체 생성 및 멤버 접근객체 생성: val/var 객체명 = 클래스명(전달인자)=>ex) val user=User("kim")멤버 접근: 점을 찍어 접근=>ex)user.someFun() 2.생성자1)주생성자선언:class 클래스명 constructor(){...}=>constructor생략가능(class 클래스명(){})=>매개변수가 없으면 ()도 생략가능=>주생성자 생성안할시 컴파일러가 매개변수없는 주생성자 자동생성매개변수: 필요에 따라 ( )부분에 name:String, count: Int 처럼 매개변수 넣기가능주생성자에 본문추가: init{...}으로 주..

2일차)코틀린 문법-2

함수1. 선언 :  fun 함수명(매개변수명: 타입): 반환타입 {...}1)반환타입 생략시 자동으로  Unit설정2)매개변수는 자동 val 설정3)매개변수 기본값 설정: 매개변수명: 타입 = 기본값 형식으로 두면 인자전달 안 할시 기본값으로 받음4)명명된 매개변수: 호출시 매개변수명 지정시 순서 바뀌어도 됨: ex)some(data2=10,data1=20) 컬렉션 타입: Array, List,Set,Map 1. Array1)생성기본: val data: Array=Array(n,{a}): n개의 a로 구성된 배열 생성기초타입: val data: 데이터타입Array = 데이터타입Array(n,{a})arrayOf(): val data=arrayOf(데이터들)=>arrayOf()는 다양한 타입의 데이터들로 ..

1일차)코틀린 문법-1

1. 패키지 경로 패키지 경로가 같은 코틀린 파일끼리는 import없이 사용가능. -경로가 다르면 import로 지정해서 사용가능ex) import com.example.test3.data //com.example.test3라는 경로 안에 존재하는 코틀린 파일에서 data라는 변수 가져옴 =>궁금증)같은 경로 서로 다른 파일안에 동일 명의 변수가 존재하면? ex)A.kt와 B.kt에 data라는 변수존재시 C.kt에서 data라는 변수사용하려할시?: 전역변수에서의 동일명의 변수는 존재하게 이름 지정시 컴파일에서 에러가 뜸 2. 변수1)선언 형식: val / var 변수명: 타입 = 값-val은 초기화 후 변경 불가, var은 초기화 후 변경 가능 2)위치에 따른 초기값 설정: 함수 밖 최상위 위치는 처음..