코틀린(Kotlin) 91

[Kotlin 문법] 객체지향 프로그래밍의 기초

메서드 설계 클래스 설계 생성자의 활용 객체의 활용 상속 오버라이딩 오버로딩 인터페이스 메서드 설계 특정한 로직을 가지는 소스코드에 이름을 붙일 수 있는데, 이름이 붙은 로직을 메서드라고 한다 // Kotlin의 메서드 구조 fun 메서드이름(변수명:자료형, 변수명:자료형 ...) : 반환자료형 { 소스코드 로직 } 로직을 추상화해 놓고 상황에 맞게 실행할 수 있다 코드의 재사용성을 높일 수 있다 // 두 개의 숫자를 더하는 메서드를 만들고, 전달하는 숫자에 따라 덧셈결과를 받도록 fun main() { var num1 = readLine()!!.toInt() var num2 = readLine()!!.toInt() // sum 이라는 이름의 메소드를 호출 sum(num1, mum2) } fun sum(..

[Kotlin 문법] 기초 - 단축키 및 기초지식

유용한 단축키 자료형 변수와 상수 연산자의 종류 조건식 반복문 실습 초보자를 위한 유용한 단축키(Window기준) // 라인 드래그 Shift + 방향키 // 라인 지우기 Ctrl + Y // 주석 처리 Ctrl + / // 자동 포커싱 - 소스코드 작성 중, 다른 작업 때문에 작업하던 라인을 찾기 힘들 때 ESC // 프로젝트 내부에서 사용중인 모든 단어들의 위치 탐색 Ctrl + Shift + F // 복사, 붙여넣기 Ctrl + C [복사] Ctrl + V [붙여넣기] Ctrl + D [라인 복사 후 생성] // [최상단 이동] Home // [최하단 이동] End 자료형 프로그램의 모든 정보를 데이터 또는 자료라고 한다 자료를 저장할 수 있는 적절한 형태를 자료형이라고 정의한다 타입 크기 특징 L..

[프로그래머스/코틀린(Kotlin)] 두 개 뽑아서 더하기

정수 배열 numbers의 서로 다른 인덱스에 있는 두 수를 뽑아서 만들 수 있는 모든 수를 배열에 오름차순 정렬하기 예시) 풀이 다중 for문을 이용해서 서로 다른 인덱스를 사용하기(삼총사 편 참고) set으로 배열 속 중복제거 제출 코드 (코드 해석해 보기) 3) mutableSetOf를 사용하여 배열 속 중복값을 제거해 준다 5, 6) 삼총사편에서 썼던 것처럼 서로 다른 두 인덱스값을 구한다 7) 서로 다른 두 인덱스 값을 answer에 더해준다 10) answer에 sorted()로 오름차순 정렬 배열 속 중복제거 = set .. 처음 제출 코드는 set을 사용해서 배열 속 중복을 제거하는 법 모르고 중복값을 어떻게 제거해야 할 지 몰랐다.. 그래서 검색으로 hashSet, distinct, se..

[프로그래머스/코틀린(Kotlin)] K번째 수

array배열의 i번째 숫자부터 j번째 숫자까지 자르고 오름차순 정렬한 후, k번째에 있는 수를 리턴 시키기 예시) 풀이 forEach{} 사용하여 특정 구문 반복 sliceArray()를 사용하여 범위를 잘라낸 새 배열 생성 sort() 사용하여 오름차순 정렬 제출 코드 (코드 보기) - 몇 시간 헤매다가 검색으로 답지와 해석을 봤다.. 5) commands.forEach{}를 사용하여 commands 배열의 특정 부분만 반복한다 6) array배열을 sliceArray()로 특정범위(i부터 j까지)를 잘라낸다 ( it[0]은 문제의 [i, j, k]가 2, 5, 3이라면 2이다. index는 0부터 시작하니까 -1, until [1]은 1 이전까지니까 -1을 하지 않아도 된다) 7) 잘라낸 배열을 오..

[프로그래머스/코틀린(Kotlin)] 문자열 내 마음대로 정렬하기

문자열로 구성된 리스트를 받아, 각 문자열의 n번째 인덱스를 기준으로 오름차순 하기 예시) 풀이 sortedWith(compareBy)를 사용하여 다중기준을 두고 오름차순 정렬 제출 코드 (코드 해석해 보기) sortedWith()에서 comparator를 활용하여 첫 번째는 인덱스[n]번째를 기준으로, 그다음 기준은 [제한 조건]에 있는 n번째 인덱스가 같은 문자열일 경우, 사전순으로 배치시킨다 .toTypedArray()로 string타입을 Array타입으로 변형시켜 준다 sortedBy() selector를 지정하여 기준을 정할 수 있다 -> ??.sortedBy{ it.first } 내림차순으로 사용하고 싶을 땐 sortedByDescending() -> ??.sortedByDescending{ ..

[프로그래머스/코틀린(Kotlin)] 숫자 문자열과 영단어

숫자의 일부 자릿수가 영단어로 바뀌어져 있는 문자열 s를 의미하는 원래 숫자로 리턴 시키기 but, 숫자는 그대로 리턴하기 예시) 풀이 replace()를 사용해서 특정 문자를 변형한다 .toInt()를 사용해서 string타입을 Int형으로 리턴 시키기 제출 코드 (코드 해석해 보기) 무지성 replace() 연달아 붙이기로 해결.. ㅎㅎ;; for문을 이용한 다른 분들의 풀이 7) i가 num의 처음부터 반복하니까 2일 때 -> num[2]("two")를 2로 바꿔준다 (indices로 쓰니까 뭔가 i가 1부터 시작하는 것 처럼 헷갈리는데 for(i in 0 until num.size)로 써놓을 걸 그랬다) 9) str이 string타입이기 때문에 .toInt()로 Int형으로 바꿔준다 replace..

[프로그래머스/코틀린(Kotlin)] 시저 암호

문자열 s에 있는 각 알파벳을 n만큼 밀어서 다른 알파벳으로 암호화하기 예시) 풀이 카이사르 암호의 법칙.. (이라고 한다..) 리스트화 후 다시 string 타입으로 제출 코드 (코드 해석해 보기) 이번 문제는 솔직히 리스트화(map)와 제한 조건 덕분에 when까지만 떠올릴 수 있었고, 대문자 알파벳과 소문자 알파벳을 일일이 다 적어놓고 인덱스를 뽑아서 쓰는 형식은 너무 얽히고 복잡해져서 포기했다 특히 5, 6번째 줄은 전혀 몰라서 검색을 통해 알게 되었다 알파벳 범위 사용하는 법도 알았었는데 까먹고 있었다.. 5, 6) 카이사르 암호의 법칙을 이용하면 된다고 한다 fun Char.caesar(c: Int, n: Char, m: Char): Char = (n + (it - n + c) % (m - n..

[프로그래머스/코틀린(Kotlin)] 최소직사각형

각각의 명함들의 가로길이와 세로 길이를 파악하여 지갑의 크기를 파악하기 예시) 풀이 min(), max() 이용하기 명함을 회전할 수 있다는 것 이용하기 제출 코드 (코드 해석해 보기) 명함을 회전시킬 수 있으므로 가로길이(W)와 세로길이(H) 상관없이 최댓값을 구한다 그리고 각 행에서의 작은 수들 중에서 가장 큰 수를 곱해준다 (따지고 보면 maxW, maxH는 아닌..) (for문에 i[0], i[1]을 비교하는 이유는 행첨자([])는 열단위로, i(포인터)는 행단위로 이동한다) 7) 2차원 배열 sizes의 1행부터 끝행까지 중 최댓값을 찾는다 (명함을 회전시킬 수 있으므로, 가로길이던 세로길이던 가장 큰 길이에 맞춰야 하므로) 8) 2차원 배열 sizes의 1행부터 각 행의 최솟값들을 구하고 그 ..

[프로그래머스/코틀린(Kotlin)] 크기가 작은 부분 문자열

숫자로 이루어진 문자열 t와 p에서 t에서 p와 길이가 같은 부분문자열을 추출해서, 이 부분문자열의 수가 p의 숫자보다 작거나 같은 것이 나오는 횟수를 리턴 시키기 예시) 풀이 substring() 사용하여 문자열 자르기 for문으로 반복하여 p의 길이만큼 t배열 속 숫자 자르기 제출 코드 (코드 해석해 보기) 4) i를 (t의 길이) - (p의 길이)만큼 반복한다 t의 길이가 3141592(=7)이고 p가 271(=3)이면 t에 p의 길이만큼 있는 숫자는 5개(314, 141, 415, 159, 592)이기 때문에 t.length - p.length보다 그 크기는 1만큼 더 크다. 그래서 0..t.length - p.length로 써준다 그리고 t.length - p.length로 쓰면 for-loop..

[프로그래머스/코틀린(Kotlin)] 삼총사

정수배열 [number]에서 3개의 정수로 0을 만들 수 있는 경우에 answer++ 예시) 풀이 다중 for문 이용하면서 index 범위 설정하기 제출 코드 (코드 해석해 보기) 4) i는 number 배열의 인덱스 크기만큼 반복한다 for(i in 0 until number.size)로 써도 된다 5) j는 앞에서 구한 i + i인덱스를 제외한 나머지 인덱스 크기만큼 반복한다 6) 마찬가지로 k도 앞에서 구한 j + j인덱스를 제외한 나머지 인덱스 크기만큼 반복한다 7) number배열의 i, j, k의 합이 0일 때 answer++로 +1씩 추가해 준다