잡다한 배똥월드

728x90
코딩 테스트 풀이 체크리스트
2시간 내에 풀었는가? O
본인의 실력으로 풀었는가? O

 

 

코딩테스트 연습 - 서울에서 김서방 찾기

String형 배열 seoul의 element중 "Kim"의 위치 x를 찾아, "김서방은 x에 있다"는 String을 반환하는 함수, solution을 완성하세요. seoul에 "Kim"은 오직 한 번만 나타나며 잘못된 값이 입력되는 경우는 없습니

programmers.co.kr

 

 

 

 

class Solution {
    fun solution(seoul: Array<String>): String {
        var num = seoul.indexOf("Kim");
        return "김서방은 " + num + "에 있다";
    }
}

 

테스트 1 통과 (18.97ms, 65.8MB)
테스트 2 통과 (19.75ms, 65MB)
테스트 3 통과 (19.17ms, 65.8MB)
테스트 4 통과 (19.95ms, 65.7MB)
테스트 5 통과 (19.57ms, 65.1MB)
테스트 6 통과 (18.98ms, 65.8MB)
테스트 7 통과 (19.75ms, 65.8MB)
테스트 8 통과 (20.21ms, 65.5MB)
테스트 9 통과 (19.09ms, 65.4MB)
테스트 10 통과 (19.77ms, 65.2MB)
테스트 11 통과 (19.13ms, 65.9MB)
테스트 12 통과 (20.01ms, 65.7MB)
테스트 13 통과 (19.70ms, 66.4MB)
테스트 14 통과 (19.53ms, 66.5MB)

 

 

 

 

indexOf( ) 로 배열 속 Kim이 있는 위치를 찾은 후 문자 그대로 작성해서 리턴하면 됨

 

 

 

 

 

728x90
728x90
코딩 테스트 풀이 체크리스트
2시간 내에 풀었는가? O
본인의 실력으로 풀었는가? O

 

 

코딩테스트 연습 - 수박수박수박수박수박수?

길이가 n이고, "수박수박수박수...."와 같은 패턴을 유지하는 문자열을 리턴하는 함수, solution을 완성하세요. 예를들어 n이 4이면 "수박수박"을 리턴하고 3이라면 "수박수"를 리턴하면 됩니다. 제한

programmers.co.kr

 

 

 

 

 

 

class Solution {
    fun solution(n: Int): String {
        var word = "수박";
        var answer = "";
        
        for (i in 1..n/2) {
            answer += word;
        }
        
        if (n % 2 == 1) {
            answer += "수";
        }
        
        return answer
    }
}​

 

테스트 1 통과 (2.63ms, 63.4MB)
테스트 2 통과 (6.95ms, 70.6MB)
테스트 3 통과 (4.13ms, 66.5MB)
테스트 4 통과 (10.90ms, 75.6MB)
테스트 5 통과 (4.88ms, 66.3MB)
테스트 6 통과 (1.94ms, 63.6MB)
테스트 7 통과 (1.81ms, 63.4MB)
테스트 8 통과 (2.06ms, 64.2MB)
테스트 9 통과 (1.40ms, 63.1MB)
테스트 10 통과 (1.32ms, 62.5MB)
테스트 11 통과 (1.33ms, 63.3MB)
테스트 12 통과 (1.27ms, 64.6MB)
테스트 13 통과 (2.02ms, 63.2MB)
테스트 14 통과 (1.41ms, 63.3MB)
테스트 15 통과 (27.58ms, 88.8MB)
테스트 16 통과 (2.05ms, 62.9MB)

 

 

 

 

2로 나눠서 몫만큼 수박을 반복하고, 마지막에 만약에 홀수(2로 나눴을 때 나머지가 1)면 마지막에 수 글자 추가하기.

 

 

 

 

 

728x90
728x90
코딩 테스트 풀이 체크리스트
2시간 내에 풀었는가? O
본인의 실력으로 풀었는가? O

 

 

코딩테스트 연습 - 문자열을 정수로 바꾸기

문자열 s를 숫자로 변환한 결과를 반환하는 함수, solution을 완성하세요. 제한 조건 s의 길이는 1 이상 5이하입니다. s의 맨앞에는 부호(+, -)가 올 수 있습니다. s는 부호와 숫자로만 이루어져있습니

programmers.co.kr

 

 

 

 

class Solution {
    fun solution(s: String): Int {
        return s.toInt();
    }
}

 

테스트 1 통과 (0.02ms, 63.1MB)
테스트 2 통과 (0.02ms, 63.1MB)
테스트 3 통과 (0.02ms, 63.6MB)
테스트 4 통과 (0.02ms, 63MB)
테스트 5 통과 (0.02ms, 63.4MB)
테스트 6 통과 (0.02ms, 63.1MB)
테스트 7 통과 (0.02ms, 65.2MB)
테스트 8 통과 (0.02ms, 61MB)
테스트 9 통과 (0.02ms, 63.7MB)
테스트 10 통과 (0.02ms, 63.2MB)
테스트 11 통과 (0.02ms, 63.4MB)
테스트 12 통과 (0.02ms, 63MB)
테스트 13 통과 (0.02ms, 65MB)
테스트 14 통과 (0.02ms, 63.4MB)
테스트 15 통과 (0.02ms, 64.5MB)

 

 

 

 

그냥 그대로 String을 Int형으로 바꾸기 위해서 toInt() 함수를 사용했다.

 

 

 

 

 

728x90
728x90
코딩 테스트 풀이 체크리스트
2시간 내에 풀었는가? O
본인의 실력으로 풀었는가? O

 

 

코딩테스트 연습 - 시저 암호

어떤 문장의 각 알파벳을 일정한 거리만큼 밀어서 다른 알파벳으로 바꾸는 암호화 방식을 시저 암호라고 합니다. 예를 들어 "AB"는 1만큼 밀면 "BC"가 되고, 3만큼 밀면 "DE"가 됩니다. "z"는 1만큼 밀

programmers.co.kr

 

 

 

 

 

class Solution {
    
    var alphabet = arrayOf("A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z");
    
    fun solution(s: String, n: Int): String {        
        
        var arr = s.chunked(1);
        var answer = Array(arr.size){" "};
        
        for (i in 0..arr.size - 1) {
            if (arr[i] == " ") continue;
            
            var position = alphabet.indexOf(arr[i]);
            if (position == -1) {
                var word = arr[i].toUpperCase();
                position = alphabet.indexOf(word);
                
                answer[i] = alphabet[func(position + n)].toLowerCase();
            } else {
                answer[i] = alphabet[func(position + n)];
            }
        }
        
        return answer.joinToString("");
    }
    
    fun func(num: Int): Int {
        var n = 0;
        if (num >= 26) n = num - 26 else n = num
        return n;
    }
}

 

테스트 1 통과 (21.58ms, 66.3MB)
테스트 2 통과 (21.49ms, 66.2MB)
테스트 3 통과 (21.28ms, 66.7MB)
테스트 4 통과 (29.02ms, 65.7MB)
테스트 5 통과 (25.28ms, 66.4MB)
테스트 6 통과 (26.19ms, 66.3MB)
테스트 7 통과 (21.73ms, 66.2MB)
테스트 8 통과 (22.64ms, 66MB)
테스트 9 통과 (21.39ms, 66.3MB)
테스트 10 통과 (22.76ms, 66.4MB)
테스트 11 통과 (23.57ms, 66MB)
테스트 12 통과 (21.94ms, 66.2MB)
테스트 13 통과 (28.62ms, 67.4MB)

 

 

 

 

 

for문 안의 if문의 숫자 계산은 비슷해서 비슷한 부분은 따로 함수 선언해서 만들었음.

그래서 소문자면 대문자로 바꿔서 alphabet 배열의 위치랑 파악한 후 다시 소문자로 변환

대문자는 그대로 위치만 이동

 

 

 

 

 

728x90
728x90
코딩 테스트 풀이 체크리스트
2시간 내에 풀었는가? O
본인의 실력으로 풀었는가? O

 

 

코딩테스트 연습 - 약수의 합

정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요. 제한 사항 n은 0 이상 3000이하인 정수입니다. 입출력 예 n return 12 28 5 6 입출력 예 설명 입출력 예 #1 12의 약수

programmers.co.kr

 

 

 

 

 

class Solution {
    fun solution(n: Int): Int {
        var answer = 0
       	var arr = IntArray(n+1){0};
        
        for (i in 1..n) {
            if (arr[i] != 0) continue;
        
            if (n % i == 0) {
                arr[i] = 1;
                arr[n / i] = 1;
            }
        }
        
        for (i in 1..n) {
            if (arr[i] == 1) answer += i;
        }
        
        return answer
    }
}

 

테스트 1 통과 (0.01ms, 64MB)
테스트 2 통과 (0.01ms, 64.8MB)
테스트 3 통과 (0.06ms, 64.2MB)
테스트 4 통과 (0.03ms, 64.1MB)
테스트 5 통과 (0.09ms, 63.5MB)
테스트 6 통과 (0.05ms, 65.6MB)
테스트 7 통과 (0.14ms, 63.3MB)
테스트 8 통과 (0.04ms, 63.8MB)
테스트 9 통과 (0.20ms, 62.2MB)
테스트 10 통과 (0.15ms, 63.8MB)
테스트 11 통과 (0.11ms, 63.7MB)
테스트 12 통과 (0.13ms, 63.4MB)
테스트 13 통과 (0.02ms, 64.3MB)
테스트 14 통과 (0.12ms, 63.2MB)
테스트 15 통과 (0.12ms, 63.1MB)
테스트 16 통과 (0.01ms, 63.2MB)
테스트 17 통과 (0.16ms, 62.7MB)

 

 

 

 

숫자로 나눠서 나머지가 0인 숫자와 그 몫을 더해주면 됨.

 

 

 

 

 

728x90
728x90
코딩 테스트 풀이 체크리스트
2시간 내에 풀었는가? O
본인의 실력으로 풀었는가? O

 

 

코딩테스트 연습 - 이상한 문자 만들기

문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을

programmers.co.kr

 

 

 

 

 

class Solution {
    fun solution(s: String): String {
        var sArr = s.split(" ");
        
        var arr = Array(s.length){" "};
        var index = 0;
        
        for (i in 0..sArr.size - 1) {
            
            var temp = sArr[i].chunked(1);
            
            for (j in 0..temp.size-1) {
                if (j % 2 == 0) {
                    arr[index] = temp[j].toUpperCase();
                } else {
                    arr[index] = temp[j].toLowerCase();
                } 
                index++;
            }
            index++;
        }
        
        return arr.joinToString("");
    }
}

 

테스트 1 통과 (31.59ms, 66MB)
테스트 2 통과 (25.66ms, 66.9MB)
테스트 3 통과 (27.06ms, 66.1MB)
테스트 4 통과 (23.21ms, 65.7MB)
테스트 5 통과 (22.37ms, 66.6MB)
테스트 6 통과 (38.35ms, 66.7MB)
테스트 7 통과 (24.62ms, 66.2MB)
테스트 8 통과 (24.78ms, 66.7MB)
테스트 9 통과 (23.24ms, 66MB)
테스트 10 통과 (21.49ms, 65.9MB)
테스트 11 통과 (28.37ms, 66.2MB)
테스트 12 통과 (22.27ms, 65.8MB)
테스트 13 통과 (23.00ms, 66.3MB)
테스트 14 통과 (22.61ms, 66.3MB)
테스트 15 통과 (22.75ms, 65.9MB)
테스트 16 통과 (22.29ms, 66.1MB)

 

 

 

 

 

코틀린은 정말 하면 할수록 모르겠음

일단 Array()로 배열 선언을 하려면 무조건 내용이 필요함.

 그래서 {" "}로 내용을 채웠고,

각 단어들을 나누기 위해서 split()을 이용하여 띄어쓰기 기준으로 배열을 만들었고

각 단어들을 한 자리로 나누기 위해서 chunked(1)로 또 나누었음

그래서 짝수 자리는 대문자, 홀수 자리는 소문자로 해서 하나씩 넣었고

마지막에 joinToString()으로 배열을 합쳐서 리턴함

 

 

 

 

 

728x90
728x90
코딩 테스트 풀이 체크리스트
2시간 내에 풀었는가? O
본인의 실력으로 풀었는가? O

 

 

코딩테스트 연습 - 자릿수 더하기

자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요. 예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다. 제한사항 N의 범위 : 100,000,000 이하의 자연수 입출

programmers.co.kr

 

 

 

 

 

class Solution {
    fun solution(n: Int): Int {
        var answer = 0;
        var num = n;
        
        do {
            answer += num % 10;
            num /= 10;
        } while (num > 0)

        return answer;
    }
}

 

테스트 1 통과 (0.01ms, 63.8MB)
테스트 2 통과 (0.01ms, 63.4MB)
테스트 3 통과 (0.01ms, 64.3MB)
테스트 4 통과 (0.02ms, 61.8MB)
테스트 5 통과 (0.02ms, 63.2MB)
테스트 6 통과 (0.01ms, 63.4MB)
테스트 7 통과 (0.01ms, 65.2MB)
테스트 8 통과 (0.01ms, 62.7MB)
테스트 9 통과 (0.01ms, 63.4MB)
테스트 10 통과 (0.01ms, 61.8MB)
테스트 11 통과 (0.01ms, 63.4MB)
테스트 12 통과 (0.01ms, 63.2MB)
테스트 13 통과 (0.01ms, 63.3MB)
테스트 14 통과 (0.01ms, 63.6MB)
테스트 15 통과 (0.01ms, 64.8MB)
테스트 16 통과 (0.01ms, 64.1MB)
테스트 17 통과 (0.02ms, 62.2MB)
테스트 18 통과 (0.02ms, 63.4MB)
테스트 19 통과 (0.01ms, 63.5MB)
테스트 20 통과 (0.01ms, 63MB)
테스트 21 통과 (0.01ms, 64.5MB)

 

 

 

 

123을 10으로 나눈 나머지 = 3

123을 10으로 나눈 몫 = 12

 

12를 10으로 나눈 나머지 = 2

12를 10으로 나눈 몫 = 1

 

1을 10으로 나눈 나머지 = 1

1을 10으로 나눈 몫 = 0

 

 

 

 

이렇게 숫자가 0이 될 때까지 나머지를 더해주면서 10으로 나눠주면서 진행한다.

 

 

 

 

 

728x90
728x90
코딩 테스트 풀이 체크리스트
2시간 내에 풀었는가? O
본인의 실력으로 풀었는가? O

 

 

코딩테스트 연습 - 자연수 뒤집어 배열로 만들기

자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요. 예를들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다. 제한 조건 n은 10,000,000,000이하인 자연수입니다. 입출력 예 n return 12345

programmers.co.kr

 

 

 

 

 

class Solution {
    fun solution(n: Long): IntArray {
        var answer = IntArray(n.toString().length);
        var num = n;
        var index = 0;
        
        do {
            answer[index] = (num % 10).toInt();
            num /= 10;
            index++;
        } while (num > 0);
        
        return answer
    }
}

 

테스트 1 통과 (0.03ms, 64.4MB)
테스트 2 통과 (0.03ms, 62.5MB)
테스트 3 통과 (0.02ms, 61.4MB)
테스트 4 통과 (0.03ms, 61.8MB)
테스트 5 통과 (0.03ms, 63.6MB)
테스트 6 통과 (0.02ms, 63.7MB)
테스트 7 통과 (0.03ms, 63MB)
테스트 8 통과 (0.02ms, 64.5MB)
테스트 9 통과 (0.02ms, 62.6MB)
테스트 10 통과 (0.02ms, 64.5MB)
테스트 11 통과 (0.02ms, 63.4MB)
테스트 12 통과 (0.02ms, 63.1MB)
테스트 13 통과 (0.03ms, 64.7MB)

 

 

 

 

 

방금 전에 풀었던 식이랑 비슷하게 사용할 수 있어서 그대로 사용

일단 Int배열을 n의 길이로 해서 선언

그리고 n의 값을 그대로 가진 num이라는 녀석을 선언하는데,

이 녀석을 10으로 나누면서 나머지를 answer에 그대로 추가.

이 때 num % 10은 long형이기 때문에 toInt()로 형 변환을 한 후 answer에 넣고

num이 0이 되면 while문 탈출

그리고 그대로 answer을 리턴하면 된다.

 

 

 

 

 

728x90

+ Recent posts