잡다한 배똥월드

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

 

 

코딩테스트 연습 - 124 나라의 숫자

 

programmers.co.kr

 

 

 

 

 

class Solution {
    public String solution(int n) {
        String answer = "";
        String[] arr = {"1", "2", "4"};
        
        while (n > 0) {
            int temp = n - 1;
            int a = temp / 3;
            int b = temp % 3;
            
            answer = arr[b] + answer;
            
            n = a;
        }
        
        return answer.toString();
    }
}

 

정확성 테스트
테스트 1 통과 (1.16ms, 74.5MB)
테스트 2 통과 (1.58ms, 76.2MB)
테스트 3 통과 (1.56ms, 77.3MB)
테스트 4 통과 (1.73ms, 78.9MB)
테스트 5 통과 (1.11ms, 75.9MB)
테스트 6 통과 (1.10ms, 76.1MB)
테스트 7 통과 (1.29ms, 66.7MB)
테스트 8 통과 (1.33ms, 72.8MB)
테스트 9 통과 (1.25ms, 75.7MB)
테스트 10 통과 (1.06ms, 77.4MB)
테스트 11 통과 (1.26ms, 83.1MB)
테스트 12 통과 (1.28ms, 73.7MB)
테스트 13 통과 (1.16ms, 76.6MB)
테스트 14 통과 (1.15ms, 75.2MB)
효율성 테스트
테스트 1 통과 (1.51ms, 52.3MB)
테스트 2 통과 (1.85ms, 52.1MB)
테스트 3 통과 (0.92ms, 52.6MB)
테스트 4 통과 (1.44ms, 52.1MB)
테스트 5 통과 (1.49ms, 51.7MB)
테스트 6 통과 (1.40ms, 51.7MB)

 

 

 

 

 

n이 0이 될 때까지 3으로 나누고, 나머지는 숫자에 따라서 1이냐 2냐 4냐를 책정해서 answer에 추가

 

 

 

 

 

728x90
728x90

 

 

 

1. 정의

  • 동일한 데이터 유형을 여러 개 사용해야 할 경우 이를 손쉽게 처리하기 위해 여러 개의 변수들을 조합해서 하나의 이름으로 정의해 사용하는 것
  • 개별적인 요소들의 위치는 첨자를 이용하여 지증
  • 변수명 뒤에 대괄호 [ ]를 붙이고 그 안에 사용할 개수를 지정
  • 위치는 0부터 시작됨
  • 행 우선으로 데이터가 기억장소에 하랑됨
  • 첨자 없이 배열 이름을 사용하면 배열의 첫 번째 요소의 주소를 지정하는 것과 같음

 

 

 

 

2. 1차원 배열

  • 변수들을 일직선상의 개념으로 조합한 배열
  • 형식 : 자료형 변수명[개수] => ex) int a[5]; : 5개의 요소를 갖는 정수형 배열 a
  • Java에서는 객체로 취급되어 'new' 명령을 이용해서 생성 => int a[] = new int[5];

 

 

 

 

3. 2차원 배열

  • 변수들을 평면, 즉 행과 열로 조합한 배열
  • 형식 : 자료형 변수명[행개수][열개수] => ex) int b[3][3] : 3개의 행과 3개의 열을 갖는 정수형 배열 b

 

 

 

 

4. 배열의 초기화

  • 배열 선언 시 초기값을 지정할 수 있음
  • 선언 시 배열의 크기를 생략하는 경우 반드시 초기값을 지정해야 함
  • 배열의 개수보다 적은 수로 배열을 초기화하면 입력된 값만큼 지정한 숫자가 입력되고, 나머지 요소에는 0이 입력됨

 

 

 

 

5. 배열 형태의 문자열 변수

  • C언어에서는 큰땅모표로 묶인 글자는 글자 수에 관계없이 문자열로 처리
  • 문자열을 저장하는 자료형이 없어 배열 또는 포인터를 이용하여 처리
  • 형식 : char 배열이름[크기] = "문자열"
  • 배열에 문자열을 저장하면 문자열의 끝을 알리기 위한 널 문자(\0)가 무자열 끝에 자동으로 삽입
  • 이미 선언된 배열에는 문자열을 저장할 수 없음
  • 널 문자까지 고려하여 배열 크기를 지정해야 함
  • ex) char a[5]= "love" => {l, o, v, e, \0}

 

 

 

 

 

 

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

 

 

코딩테스트 연습 - 소수 만들기

주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하려고 합니다. 숫자들이 들어있는 배열 nums가 매개변수로 주어질 때, nums에 있는 숫자들 중 서로 다른 3개를 골라 더했을 때

programmers.co.kr

 

 

 

 

 

class Solution {
    
    boolean[] check;
    int answer;
    
    public int solution(int[] nums) {
        answer = 0;
        
        check = new boolean[nums.length];
        
        func(nums, 0, 0, 0);

        return answer;
    }
    
    public void func(int[] arr, int num, int index, int position) {
        if (index == 3) {
            boolean value = true;
            
            for (int i = 2; i < num; i++) {
                if (num % i == 0) {
                    value = false;
                    break;
                }
            }
            
            if (value) answer++;
            
            return;
        }
        
        for (int i = position; i < arr.length; i++) {
            if (check[i]) continue;
            
            check[i] = true;
            func(arr, num+arr[i], index+1, i+1);
            check[i] = false;
        }
    }
}

 

테스트 1 통과 (0.62ms, 72MB)
테스트 2 통과 (0.79ms, 73.3MB)
테스트 3 통과 (0.28ms, 77.9MB)
테스트 4 통과 (0.21ms, 77.4MB)
테스트 5 통과 (0.99ms, 85.1MB)
테스트 6 통과 (3.21ms, 69.6MB)
테스트 7 통과 (0.28ms, 70.2MB)
테스트 8 통과 (6.34ms, 75.1MB)
테스트 9 통과 (0.78ms, 76.5MB)
테스트 10 통과 (5.25ms, 78.5MB)
테스트 11 통과 (0.07ms, 75.7MB)
테스트 12 통과 (0.04ms, 72.4MB)
테스트 13 통과 (0.06ms, 77.5MB)
테스트 14 통과 (0.05ms, 72.9MB)
테스트 15 통과 (0.03ms, 73.2MB)
테스트 16 통과 (13.90ms, 79.4MB)
테스트 17 통과 (0.63ms, 75.3MB)
테스트 18 통과 (0.45ms, 71.1MB)
테스트 19 통과 (0.06ms, 78.2MB)
테스트 20 통과 (15.36ms, 76.8MB)
테스트 21 통과 (14.37ms, 77.4MB)
테스트 22 통과 (0.49ms, 76MB)
테스트 23 통과 (0.02ms, 74.5MB)
테스트 24 통과 (12.59ms, 76.1MB)
테스트 25 통과 (12.55ms, 78.8MB)
테스트 26 통과 (0.02ms, 76.8MB)

 

 

 

 

 

DP인가..? 어쨋든 하나씩 다녀오면서 숫자 3개를 더했는지 확인하고 더했으면 소수인지 확인 후 계산

 

 

 

 

 

728x90
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

+ Recent posts