일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 스택 자바 코드
- 안드로이드 유닛테스트란
- ANR이란
- 안드로이드 os 구조
- 2022 플러터 안드로이드 스튜디오
- android ar 개발
- 서비스 쓰레드 차이
- ar vr 차이
- rxjava hot observable
- 큐 자바 코드
- android retrofit login
- rxjava cold observable
- 안드로이드 라이선스
- jvm이란
- 객체
- jvm 작동 원리
- 안드로이드 레트로핏 crud
- rxjava disposable
- 자바 다형성
- 안드로이드 유닛 테스트 예시
- 안드로이드 유닛 테스트
- 스택 큐 차이
- 클래스
- Rxjava Observable
- 플러터 설치 2022
- 멤버변수
- 서비스 vs 쓰레드
- 2022 플러터 설치
- 안드로이드 레트로핏 사용법
- 안드로이드 라이선스 종류
- Today
- Total
목록전체 글 (1108)
나만을 위한 블로그
같은 문자는 반드시 연속해서 나타나야 그룹 단어라 한다고 한다. aacddddbb는 a가 2번, c가 1번, d가 4번, b가 1번 나타나기 때문에 연속해서 나타난다고 볼 수 있어 그룹 단어라고 볼 수 있을 것이다. 그러나 aabbbccb는 c 다음에 앞에 4번 나왔던 b가 나오기 때문에 그룹 단어라곤 할 수 없다.그럼 생각해볼 수 있는 방법은 n+1번 인덱스와 n번 인덱스의 문자를 비교해서 서로 다를 경우 리스트에 담고, Set으로 바꿨을 때 리스트의 길이와 Set의 길이가 같다면 그룹 단어라고 판단하는 것이다.aacddddbb는 앞의 로직으로 리스트에 담는다면 a, c, d, b가 담길 것이다. 나란히 존재하는 문자 2개를 각각 비교해서 다를 경우에만 담기 때문에 a, c, d, b 순서로 담길 것이..
입력값을 받으면 몇 개의 크로아티아 알파벳이 되는지 세서 출력해야 한다. 목록에 없는 문자면 1글자로 취급하는 조건이 있다.dz=는 먼저 처리해서 d- 또는 z=로 잘못 인식되지 않게 순서를 설정하는 게 중요하다. fun main() { var word = readln() val patterns = listOf("dz=", "c=", "c-", "d-", "lj", "nj", "s=", "z=") for (pattern in patterns) { word = word.replace(pattern, "*") } println(word.length)} 개수 세라고 미리 값들을 알려주기 때문에 이 값들을 리스트로 선언해 둔다. arrayOf를 써서 배열로 선언해도 상관없..
가장 많이 사용된 알파벳 개수를 카운팅하는 문제다. 대소문자는 구분하지 않는다니까 대문자 또는소문자로 통일시켜서 처리하면 될 것이다.바로 떠오르는 방법이라면 A~Z까지의 알파벳 26자를 담는 배열을 만들고, 입력값을 순회하면서 발견한 알파벳을 배열의 특정 인덱스에 담는 것이다.그러나 배열 만드는 건 하겠지만 a나 d같은 알파벳인지 어떻게 확인해서 배열에서 해당 인덱스를 어떻게 업데이트할 것인지가 문제다.우선 이렇게 풀 수 있다. fun main() { val word = readln().uppercase() val count = IntArray(26) // 알파벳 개수 카운트 for (char in word) { // 'A'를 빼면 0부터 시작하는 인덱스가 됨 ..
입력받은 단어가 뒤집어도 입력받은 단어와 일치하는지 확인하고 일치하면 1, 아니면 0을 리턴시키면 된다.최대 단어 길이는 100이기 때문에 간단하게 아래처럼 작성해도 풀린다. fun main() { val word = readln() val reversed = word.reversed() println(if (word == reversed) 1 else 0)} 그러나 단어 길이가 길다면 이 방식으론 시간 제한에 걸릴 수 있다.다른 방식으론 투 포인터라는 방법으로 단어의 처음, 끝에서부터 각각 끝, 처음으로 이동하면서 보이는 단어들이 서로 일치하는지 확인하는 방법이 있다. fun main() { val word = readln() var left = 0 var right =..
처음에 피스 별 몇 개여야 하는지를 알려준다. 그리고 입력을 받으면 피스마다 몇 개가 부족하거나 몇 개 더 많은지를 공백이 섞인 String 형태로 리턴해야 한다.코틀린은 작은 수에 큰 수를 빼면(1 - 3) 음수로 계산해 주기 때문에 먼저 설정해 둔 올바른 피스 개수에서 입력으로 받은 피스 개수를 빼면 예제 출력과 같은 숫자를 얻을 수 있다. fun main() { val pieces = listOf(1, 1, 2, 2, 2, 8) val input = readln().split(" ").map { it.toInt() } val result = mutableListOf() for (i in 0 until 6) { result.add(pieces[i] - input[i]..
문제 요구사항은 별 것 없다. 그냥 쓴 대로 출력하라는 문제다. 그러나 여러 줄의 문자를 출력해야 해서 readln()만 써서는 불가능하다.먼저 BufferedReader, BufferedWriter를 써서 BufferedReader.readLines()로 여러 줄을 받고 BufferedWriter.write(), BufferedWriter.newLine()으로 각 줄을 표시하는 방법이 있다.자바를 먼저 확인하고 코틀린으로 넘어왔다면 그렇게 생소하진 않은 클래스다. import문은 까먹고 안 쓰는 일이 없게 주의한다. import java.io.BufferedReaderimport java.io.BufferedWriterimport java.io.InputStreamReaderimport java.io...