본문 바로가기

개발84

TIL: 20231212 숫자들끼리는 toInt()나 toShort(),toDouble()을 입력해주면 변환된다. 문자를 숫자로 바꾸는 법은 Integer.parseInt(str), double은 str.toDouble()이다. 업캐스팅 , 자식객체에서 부모객채로 생성하는 것. 일반적으로 업캐스팅이 많이 쓰인다. 다운캐스팅, 부모객채를 자식객체로 생성하는 것. 다운캐스팅은 자식이 부모의 속성을 가져야하기 때문에 불가능함. 변수 is type -> is로 타입을 확인할 수 있다.true나 false를 반환한다. pair -> 보통 메소드는 하나의 객체만 반환한다. pair를 사용하면 2개의 객체를 반환할 수 있 다. 물론 콜렉션 같은 개체로 여러값을 전달하는 경우가 있긴 하다. pair(값,값) 형태로 변수에 담아서 반환하면 된다.. 2023. 12. 12.
코틀린: readLine/readln 으로 날짜만 입력받기 fun isDate() : Int { //입력 ex) 2024년01월01일, 2023-12-31, 2024/03/03 . 출력: 20240101, 20230213402 while(true){ try { var date = readln() date = date.replace("\\D".toRegex(),"") var day = date.takeLast(2).toInt() date = date.dropLast(2) var month = date.takeLast(2).toInt() date = date.dropLast(2) var year = date.toInt() var localDate = LocalDate.of(year,month,day) val formatter = DateTimeFormatter.of.. 2023. 12. 11.
프로그래머스 :공원 산책 class Solution { fun solution(park: Array, routes: Array): IntArray { var answer: IntArray = intArrayOf() var currentPlace = intArrayOf(0,0) for (i in park.indices){ if(park[i].contains("S")){ currentPlace[0]=i currentPlace[1]=park[i].indexOf("S") } } for(str in routes){ var move = str.split(" ") var check = true when(move[0]){ "E"-> { // println("E로 ${move[1]}칸 가야함- move[1]+curplace[1] = ${move.. 2023. 12. 11.
TIL : 코틀린 기초 생성자 생성자는 객체를 만들 때 값을 넣어주는 것이다. 주생성자는 클래스 이름 옆에 쓴다. 예)class 이름 ( --> name:String , age: Int 2023. 12. 11.
TIL: 프로그래머스 달리기 경주, 시간복잡도(Time Complexity) class Solution { fun solution(players: Array, callings: Array): Array { var answer: Array = arrayOf() var playerArray=players var change1 = 0 var change2 = 0 var temp= "" var idx = 0 for(i in 0 until callings.size){ change1= playerArray.indexOf(callings[i])-1 change2= change1+1 temp=playerArray[change2] playerArray[change2]=playerArray[change1] playerArray[change1]=temp idx++ continue } return a.. 2023. 12. 8.
TIL: 20231207 코틀린을 배우면서 느끼는 거지만 이 언어는 안전성을 최우선으로 두고 있는 것 같다. var orderList = ArrayList() var coffee= Drink() var tea= Drink() orderList += coffee // 들어간다 orderList += tea // 들어간다 var cat = Animal() orderList += cat // 안들어간다 하다보니 다른 타입의 객체를 한 리스트에 넣게 되었는데 컴파일에서 빨간 색으로 안된다고 표시를 해준다. 원시타입과 스트링 같은 경우는 같은 리스트에 넣을려면 컴패러블이라는 타입으로 둘 다 넣을 수 있어서 될 줄 알았는데 안되더라.... 왜 안되나 검색해보았다. 공변성과 반공변성 모든 타입을 넣을 수 있는 제너릭타입을 찾다가 나온 내용이.. 2023. 12. 7.
TIL: 클래스와 객체 클래스와 객체의 관계에 대해 설명할 때 붕어빵과 붕어빵틀이라는 예시를 자주 듣는다. 정말 와닿는 비유이다. 누가 처음 생각한지는 모르겠지만 좋은 비유라고 생각한다. 다만... 개념은 알겠는데 막상 '이제 만들어봐~' 하면 뭐부터 해야할지 난감하다. class 는 설계도같은거다. 가령 카페 주문 시스템을 만든다고 생각해보자. 과일주스, 에이드,커피,차,과자,케익 등 다양한 마실 것들을 팔 것이다. 이 모든 것들을 담을 수 있는 클래스를 만들려고 한다. 하나 예를 들면 커피는 음료수이면서 커피에는 디카페인 옵션도 있고 얼음을 추가할 수도 있다. 하지만 커피에는 과당이 들어가지 않는다. 탄산수도 들어가지 않는다. 이런 경우라면 어떻게 클래스를 만들어야할까? 우선 공통점과 차이점을 구분해보자. 공통점 마실 것,.. 2023. 12. 6.
TIL: 코틀린 readLine(), readln(), 숫자만 입력하기 readLine()과 readln()의 차이 var str:String = readLine() var str2:String = readln() 키보드로부터 입력받을 수 있는 함수이다. 둘 다 String타입으로 받는다. 이름이 비슷해서 똑같은 거 아니야? 라고 생각할 수 있지만 이 둘은 다르다. readLine()은 null 값도 받을 수 있다. 하지만 readln()은 null값을 받을 수 없다는 차이가 존재한다. 그러니 용도를 구분해서 쓰도록 하자. fun main() { var num = isNumber() } fun isNumber() : Int{ while (true) { try { var num = readln().toInt() return num } catch (e: NumberFormatE.. 2023. 12. 5.
TIL: git clone, git branch, git switch , data class , 생성자 ,상속, 인터페이스 git clone "주소" //프로젝트를 복사하기 git switch "브랜치 이름" //브랜치 바꾸기. 최근에 추가된 명령어이다. git checkout "브랜치 이름" //브랜치 바꾸기. 위랑 같은 역할 git branch //현재 브랜치 확인 git push origin "브랜치 이름" //해당 브랜치로 올리기 data class data class 클래스이름 { 정보1 정보2 } 프로퍼티만 갖고 있는 클래스이다. 앞에 data를 붙이면 된다는데 사용해본 적이 없어서 모르겠다. sealed class sealed class 부모클래스 { class 자식클래스1 : 부모클래스생성자 class 자식클래스2 : 부모클래스생성자 } open class를 붙이면 상속을 해줄 수 있다. 앞에 sealed를 붙.. 2023. 12. 4.