분류 전체보기 56

[Kotlin] 리스트, 배열, 반복문에서 흥미로웠던 부분

코틀린을 간단히만 배우고 안드로이드 개발을 하다가 좀 더 정확하게 기초부터 알고싶어서 codelabs 의 Kotlin Bootcammp for Programmers 와 kotlinlang.org 의 문서를 보고있다. 그러면서 자바와 다르다고 느껴지는 내용을 블로그에 정리하고자 한다. - 배열과 리스트를 초기화하는 여러가지 방법 val numbers = arrayOf(값들) // array 는 mutable 버젼이 없다. 일단 만들면 사이즈는 고정되고 copy제외 원소 추가 삭제가 불가하다. = arrayOfNulls(사이즈) // 이게 자바에서 new 로 배열 만드는 것과 같은 것 같다. = listOf(값들) // 후 수정 불가 = mutableListOf(값들) // 후 수정 가능 = primitiv..

Kotlin 2021.08.03

[Kotlin] 기존 클래스의 확장함수 사용

확장함수란 이미 주어진 클래스에 없는 기능이 필요할 때 해당 클래스의 함수를 직접 만들어서 사용할 수 있는 기능이다. 형식은 다음과 같다. fun 클래스명.함수명(인자): 반환형 {} 굵은 글씨 처리한 부분이 일반적으로 함수선언하는 방법과 다른 부분이다. 예시를 들어보면 어떤 String이 숫자인지 아닌지 알고 싶을 때가 있다고 가정해보자, 그런데 Kotlin의 String클래스에는 정수인지 아닌지 알 수 있는 함수가 없다. 그래서 직접 아래와 같은 코드를 작성할 수 있다. fun String.isNumber(): Boolean { return try { this.toInt() return true } catch (e: NumberFormatException) { return false } }

Kotlin 2021.07.18

[Kotlin] Random

import java.util.* fun main() { // 생성자에 Seed값을 넣어줄 수 있고 넣으면 고정된 숫자가 나온다. // Random생성자에 인자 넣지 않으면 나노타임이 들어가서 같은 값이 나오지 않는다. val random = Random() //숫자 하나 뽑아보기 인자를 n으로 주면 %n한 결과가 나온다. println("${random.nextInt()}") println("${random.nextInt(45)+1}") //중복된 숫자가 들어올 수 있는 방법 for(i in 1..6) { print("${random.nextInt(45)+1} ") } println() //중복을 방지하기 위해 list를 사용해본다. val list = mutableListOf() while(list...

Kotlin 2021.07.16

[Kotlin] 코틀린 입문 - 기본 문법

[Hello Kotlin!] 2016년에 Jet Brains사에서 만든 언어 자바를 보완하기 만들어져서 자바가 동작하는 환경에서는 100% 호환 2017에 안드로이드개발의 공식언어로 지정됨 (구글이 지원하겠다는 의미, sdk나 예시코드를 코틀린으로 하는 등..) Jet Brains에서 만든 IDE가 Inteli-J, Inteli-J를 기반으로 만들어진 Android Studio 에서 사용할 수 있다. [기본 변수 선언] var, val var은 변수, 두번이상 값을 할당 가능 val은 상수, 선언과 동시에만 값을 할당 가능 lateinit 코틀린은 null-safe타입으로 변수 만들면 초기화를 꼭 해줘야한다. val로 선언을 했을 때 초기값이 없으면 초기화가 안돼서 lateinit이라는 개념이 등장한다...

Kotlin 2021.07.16

[Java/프로그래머스] 압축

https://programmers.co.kr/learn/courses/30/lessons/17684 /* * 2021.07.02 * PGM 압축 https://programmers.co.kr/learn/courses/30/lessons/17684 * 일단 HashMap로 단어와 색인번호를 저장해야겠다. * A-Z까지 1~26으로 초기화 * w찾고 색인번호 출력, 다음글자 붙여서 사전에 등록 * 그냥 시키는대로 했더니 풀린다. */ import java.util.*; class Solution { static int idx; static int len; public int[] solution(String msg) { idx = 1; HashMap dic = new HashMap(); for(char c ..

[Java/프로그래머스] 방금그곡

https://programmers.co.kr/learn/courses/30/lessons/17683# 코딩테스트 연습 - [3차] 방금그곡 방금그곡 라디오를 자주 듣는 네오는 라디오에서 방금 나왔던 음악이 무슨 음악인지 궁금해질 때가 많다. 그럴 때 네오는 다음 포털의 '방금그곡' 서비스를 이용하곤 한다. 방금그곡에서는 TV, programmers.co.kr /* * 2021.07.02 * PGM 방금그곡 https://programmers.co.kr/learn/courses/30/lessons/17683# * 정규식을 이용하면 쉬운문제 였다. 문자하나가 음하나라고 인식하는 오류를 범해서 시간이 오래걸렸다. * 문자두개가 음 하나가 될 수 있다. * 여기서 시간이든(이 문제에서는 분단위로), 문자열이든..

[Java/프로그래머스] 순위검색 (시간초과 해결)

https://programmers.co.kr/learn/courses/30/lessons/72412 0 && list.get(0) >= score) answer[i] = binarySearch(list, score, 0, len-1); else //길이가 0이거나 오름차순이니 첫번째 숫자가 가장큰데 그게 기준점수보다 작다면 답은 0이다. answer[i] = 0; } return answer; } /* * 이분탐색 함수 * 일반적인 이분탐색과는 다른 점이, 딱 찾는 게 아니라 기준 점수보다 큰 최소점수를 찾아야한다. * 범위가 일정 길이 이하가 되면 liear search로 찾아준다. * @param : ArrayList 쿼리에 해당하는 점수들이 담긴 리스트 (내림차순임에 주의) * @param : s..

[Java/프로그래머스] 프렌즈4블록 (10번 케이스 해결)

https://programmers.co.kr/learn/courses/30/lessons/17679# 코딩테스트 연습 - [1차] 프렌즈4블록 프렌즈4블록 블라인드 공채를 통과한 신입 사원 라이언은 신규 게임 개발 업무를 맡게 되었다. 이번에 출시할 게임 제목은 "프렌즈4블록". 같은 모양의 카카오프렌즈 블록이 2×2 형태로 4개가 붙 programmers.co.kr 문제설명은 위 링크에서 확인가능, 10번 케이스에 대한 설명은 설명에 있다. 나에게 이 문제의 교훈은 모든 케이스를 다 고려해서 알고리즘을 작성해야한다는 것이다. 나는 이 문제가 구현 시뮬레이션 문제라고 해석했다. 2차원 char배열로 만들고 탐색과 내리기를 반복하다가, 탐색했는데 더이상 지울 것이 없다면 답을 구한다. 0~m-1과 0~..

[Java/프로그래머스] 괄호 변환

/* * 2021.06.28 * PGM 괄호 변환 https://programmers.co.kr/learn/courses/30/lessons/60058 * 개수만 맞으면 균형잡힌이고, 짝도 맞아야 올바른임 * 균형만잡힘 => 올바른 변환 * 일단 균형인지아닌지, 올바른인지 아닌지 판단하는 함수 두 개 만들자 * u와 v를 분리하기 위해 u를 찾는 함수도 만들자 */ import java.util.*; class Solution { public String solution(String p) { if(isPerfect(p)) return p; String answer = makePerfectBracket(p); return answer; } static String makePerfectBracket(Stri..

[Java/프로그래머스] 메뉴 리뉴얼

/* * 2021.06.28 * PGM 메뉴 리뉴얼 https://programmers.co.kr/learn/courses/30/lessons/72411 * 단품 -> 코스요리, 최소 두명이상이 가장많이 함께 주문한 단품메뉴가 기준 * 최소 2개이상으로 구성 * 입력이 뭐가 올지 모르니 다 해봐야하고, 각 order를 course개수만큼 조합 * 각 order가 정렬되어 들어오기 때문에 오름차순으로 조합하여 해결 * 그 조합들을 HashMap으로 카운트해서 각 숫자에 맞는 max를 찾는다. * 최소 두명이상이 해당 조합을 주문해야한다는 조건은 사실 한 사람안에서는 중복이 없으니 2 이상이면 된다. * 문제에서 course가 정렬되어있다고 했는데 나는 order들이 각각 정렬되어있는 줄 알았다. * 51분..