코딩테스트

문자열 s의 길이가 짝수인지 홀수인지 구분해서 짝수면 길이를 2로 나눈 몫에 해당하는 인덱스로, 홀수면 길이를 2로 나눈 몫에서 1을 뺀 인덱스와 몫에 해당하는 인덱스를 반환하게 했다. 그런데 문자열에서 인덱스로 요소를 가져오니까 타입이 Char으로 추론이 되어서 강제로 String으로 변환시켜주어야 했다. class Solution { fun solution(s: String): String { var answer: String = "" var a = s.length if(a %2 ==0){ answer = s[a/2-1].toString() + s[a/2].toString() } else { answer = s[a/2].toString() } return answer } } 다른 사람 풀이 class..
풀이 class Solution { fun solution(numbers: IntArray): Int { var answer: Int = 0 for(i in 0..9){ if(numbers.indexOf(i)==-1){ answer += i } } return answer } } 구현은 바로 했는데 다른 사람 풀이 보면 백퍼 이것보다 훨씬 더 간단할 것 같다 ㅎ fold 메소드를 드디어 처음 써봤다. 그런데 for 문이랑 별 차이가 없다. class Solution { fun solution(numbers: IntArray): Int { var answer: Int = (0..9).fold(0){acc,num -> acc + if(numbers.indexOf(num) ==-1) num else 0 } r..
옛날에 컴활 딸 때 이런 비슷한 걸 했던 것 같은데 🤔 어떤 메소드를 쓰는 걸까... 문자열 일부를 제외한 나머지를 일정한 값으로 바꾼다? 문자열을 map 메소드로 문자열배열로 바꾸고 for 반복문으로 인덱스가 문자열사이즈의 5보다 작거나 같으면 * 으로 값을 할당하고 크면 그대로 할당했다. class Solution { fun solution(phone_number: String): String { var answer = "" var p = phone_number.map{it.toString()} for((index, value) in p.withIndex()) { if(index
class Solution { fun solution(absolutes: IntArray, signs: BooleanArray): Int { var answer: Int = 0 for((i,s) in signs.withIndex()){ for((ii, a) in absolutes.withIndex()) { if(s == true && i == ii) { answer += a } else if ( s == false && i == ii ){ answer -= a } } } return answer } } 각각의 배열의 인덱스가 일치하는 경우 값을 더하거나 빼서 구했다. 줄이고 싶은데 방법을 모르겠다 🤨 다른 사람 풀이 class Solution { fun solution(absolutes: IntArray..
풀이 class Solution { fun solution(arr: IntArray, divisor: Int): IntArray { var answer = intArrayOf() for(i in arr) { if ( i %divisor == 0){ answer += i } } if (answer.size == 0) answer += -1 return answer.sortedArray() } } IntArray 클래스의 plus 연산자 함수 사용 arr += element Array 정렬 sort -> 원본 배열 정렬 sorted -> 정렬된 새로운 배열 반환 이 둘 사용이 헷갈린다. answer.sort() return answer .sort() 로 정렬시키고 반환 return answer.sort() ..
class Solution { fun solution(seoul: Array): String { var a = seoul.indexOf("Kim") var answer = "김서방은 ${a}에 있다" return answer } } Array 의 특정 원소의 인덱스 값 구하기 .indexOf() 원소가 없으면 -1을 반환한다.
실패 풀이 class Solution { fun solution(num: Int): Int { var answer = 0 var number = num while(true)( if ( num == 1){ break } else if ( number == 1) { break } else if ( answer == 500) { answer = -1 break } else if (number%2==0) { number /=2 answer += 1 } else if (number%2 != 0) { number = number*3 + 1 answer += 1 } ) return answer } } 테스트에서 626331 인 경우만 실패한다. 출력한걸 확인해보면 값이 1이 될 때 반복횟수가 488이다. 그래서 48..
a, b 의 대소관계가 정해져 있지 않다는 점...! 값이 같은 경우를 따로 빼고 그 외에는 for문을 돌리려고 해도 a..b 에서 성립이 안돼서 결괏값이 0이 나온다. a가 큰 경우, b 가 큰 경우 각각 조건을 만들 수는 있지만 너무 길어져서 그렇게 만들기 싫은데 다른 방법 없을까? 생각해봐도 모르겠어서 그냥 If 조건문에 넣었다...ㅜㅜ 내 풀이 class Solution { fun solution(a: Int, b: Int): Long { var answer: Long = 0 if (a-b == 0) { answer = a.toLong() } else if (a-b < 0) { for(i in a..b){ answer += i.toLong() } } else { for(i in b..a){ ans..
하샤드 수 : 각 자릿수의 합으로 나누어지는 양의 정수 처음 코드class Solution { fun solution(x: Int): Boolean { var answer = true var x: Int = x var xs: Int = 0 while(x > 0){ xs += (x %10) x /= 10 println(xs) println(x) } if (x % xs == 0) { answer = true } else { answer = false } return answer } } 테스트 3, 4 에서 결괏값이 다르게 나온다. 출력한 값은 맞게 나오는데 왜 false 로 나와야할게 true 로 나오는 걸까 IF 구문 넣기 전에 x 값이 10으로 몽땅 나눠서 0인 상태로 IF 구문에 들어가기 때문에 결괏값..
모르겠다...!! 저번에 Long 타입의 숫자를 역순으로 배치해서 배열로 리턴하라는 건 된다. 근데 배열이 아닌 정수를 어떻게 정렬하지?? 컬렉션으로 만들어서 정렬한다 쳐도 그걸 어떻게 다시 정수로 리턴하지? 컬렉션이 아닌 Long 이나 Int 를 어떻게 정렬하지? 다른 사람 풀이 class Solution { fun solution(n: Long): Long = String(n.toString().toCharArray().sortedArrayDescending()).toLong() } Long -> String -> CharArray -> 정렬 -> String -> Long toCharArray() : 문자열이 개별적인 Char 요소로 분리되어 배열로 만들어짐 sortedArrayDescending(..
다시은
'코딩테스트' 카테고리의 글 목록 (3 Page)