n을 3진법 상에서 앞뒤로 뒤집는다는게 자연수 n 을 3진법으로 바꾼 뒤 뒤집는 거겠지? 예로 나온 45의 경우 45 -> 1200 -> 0021 -> 7 3진법 변환 -> 뒤집음 -> 10진법 변환 와 하나도 모르겠다 .! n을 3으로 나눈 나머지를 n 이 0보다 작아질때까지 문자열에 차례대로 넣어서 앞뒤 반전된 3진법을 만들고 var answer: Int = 0 var x = n var y: String = "" while(x >0) { y += (x %3).toString() x /=3 } => 0021 이 문자열의 길이를 토대로 10진법으로 바꿔야하는데 reversed() 로 뒤집어서 => 1200 0번째 숫자 1은 3의 0승 * 1 1번째 숫자 2는 3의 1승 * 2 import kotlin.m..
Kotlin 대/소문자 변환 toUpperCase / toLowerCase 내 풀이 => 실패 class Solution { fun solution(s: String): String { var answer = "" s.mapIndexed{ i, n -> if( i%2 ==0 || i ==0 ) answer += n.toUpperCase() else answer += n.toLowerCase() } return answer } } 문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단해야합니다. 이게 문제인 것 같은데 문자열 전체로 본 인덱스가 아니고 "try hello world" 면 "try" 에서의 짝/홀수, "hello"에서의 짝/홀수? 힌트 .split(" ") "..
입출력 예를 보면 그냥 같은 인덱스의 값끼리 더해서 나오는게 아니라 배열 안의 배열 안의 요소들이 각각 더해져야 한다. 배열의 배열 -> 2차원 배열 val numbers = Array(3, {IntArray(4 ,{0})}) // 3행 4열 // [[0, 0, 0, 0],[0, 0, 0, 0], [0, 0, 0, 0]] 평소 다른 배열의 같은 인덱스끼리 더하는 for 문으로 했더니 결괏값이 [[4,6],[7,9]]가 아닌 [[1,2,3,4],[2,3,5,6]] 으로 나와버린다. 테스트 케이스 각각의 크기가 다른데 어떻게 더하지? 2차원 배열 예시 (https://www.youtube.com/watch?v=0Qncbm_f-Zc) val numbers2dZero = Array(3, {IntArray(4, ..
readLine 오랜만에 본다고 순간 뭐하는 앤지 못알아봤다. 내 풀이 fun main(args: Array) { val (a, b) = readLine()!!.split(' ').map(String::toInt) for(i in 1 .. b) { for(ii in 1 .. a) { print("*") } println() } } ?? 통과는 했는데 이게 맞나 싶어 다른 사람들걸 보니 다들 비슷비슷하다. val(a, b) = readLine() 입력받은 값이 쉼표로 구분되어 차례대로 a, 와 b 에 할당된다. 구조분해 선언! 데이터 클래스할 때 잠깐 봤었다. 이 a, b 는 각각의 변수고 이를 통해 각각 값을 할당받을 수 있다. val (name, age) = Pair("John", 25) println..
https://school.programmers.co.kr/learn/courses/30/lessons/12918 문자열의 요소가 숫자인지 어떻게 판별하는 걸까 is !is 로 판별하려고 했더니 문자가 들어가있는 문자열을 Int 로 변환하면 NumberFormatException 에러가 뜬다. 어떻게 하는지 모르겠다!! 힌트를 슬쩍 봤는데 정규표현식을 사용한단다. 저번에 가볍게 찾아봤을 때 입력값 조건에 사용하는 것만 봤는데 알고리즘에 쓰일 수 있다는게 이런거였구나.. 정규표현식으로 어떻게 하는지 찾기 전에 NumberFormatException 을 처리해보려고 수업에서 배운 try catch 를 써봤다. 내 풀이 class Solution { fun solution(s: String): Boolean ..
내 풀이 class Solution { fun solution(price: Int, money: Int, count: Int): Long { var answer: Long = 0 var total: Long = 0 for(i in 1..count) { total += (i * price) } if ( money - total < 0) answer = total - money else answer = 0 return answer } } 이용 횟수가 늘어갈 수록 price가 배로 늘어나는 걸 그냥 for 문에 넣었다....만능 for문... 다른 사람 풀이 class Solution { fun solution(price: Int, money: Int, count: Int): Long = (1..count)...
내 풀이 class Solution { fun solution(s: String): String { var answer = s.toCharArray().sortedArrayDescending() return String(answer) } } 문자열 -> CharArray -> 배열내림차순정렬 -> String() 여전히 헷갈려서 여러번 테스트한 것 sort : 원본 배열 정렬 sorted : 새로운 리스트 반환 sortedArray : 새로운 배열 반환 처음에 sorted로 정렬했더니 List로 나와서 String 으로 감싸지지가 않았다. List 의 각 요소들을 묶어 문자열로 만들고 싶을 때 joinToString(separator, prefix, postfix, limit) separator : 각 ..
내 풀이 class Solution { fun solution(left: Int, right: Int): Int { var answer: Int = 0 var count: Int = 0 for(i in left..right){ for(ii in 1..i){ if(i %ii == 0) count++ } if (count %2 ==0) answer += i else answer -= i count = 0 } return answer } } left 와 right 를 범위로 for문을 넣어서 약수가 나올때마다 변수 count 에 1씩 더해주고 총 count 가 짝수이면 덧셈 홀수이면 뺄셈을 해줬다. 그 뒤 for문을 반복하기 전에 count 값을 0으로 초기화했다. 한 번에 완성은 했는데 딱 봐도 복잡하다😒 ..
for문 중첩해서 돌리는 것 방법밖에 생각이 안난다.😰😰😰 class Solution { fun solution(a: IntArray, b: IntArray): Int { var answer: Int = 0 for((i, a) in a.withIndex()){ for((ii,b)in b.withIndex()){ if(i == ii) answer += (a * b) } } return answer } } 내적 : 두 서열의 상응하는 값들의 곱을 더한 것 다른 사람 풀이 class Solution { fun solution(a: IntArray, b: IntArray): Int = a.mapIndexed { index, it -> it * b[index] }.sum() } 인덱스로 바로 꺼내오는걸 왜 생각못..
문제보고 빵 터졌다. 수박수박 class Solution { fun solution(n: Int): String { var answer = "수박" if(n %2 == 0){ answer = answer.repeat(n/2) } else { answer = answer.repeat(n/2) + "수" } return answer } .repeat() 함수로 문자열을 반복했다. 다른 사람 풀이 class Solution { fun solution(n: Int): String = String(CharArray(n,{i-> if(i%2==0) '수' else '박'})) } CharArray : 원시타입 Char 로 이루어진 배열 사이즈가 n이며 각 인덱스에 대해서 if 문으로 짝수일때 "수" 홀수일 때 "박..