잡다한 배똥월드

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

 

https://programmers.co.kr/learn/courses/30/lessons/12948?language=kotlin 

 

 

 

 

 

 

class Solution {
    fun solution(phone_number: String): String {
        var answer = "";
        
        var size = phone_number.length;
        for (num in 1..size-4) {
            answer += "*";
        }
        
        answer += phone_number.substring(size-4, size);
        
        return answer;
    }
}

 

테스트 1 통과 (2.09ms, 62.2MB)
테스트 2 통과 (2.00ms, 64MB)
테스트 3 통과 (8.47ms, 62.2MB)
테스트 4 통과 (2.51ms, 62.3MB)
테스트 5 통과 (2.05ms, 63.4MB)
테스트 6 통과 (2.67ms, 63.3MB)
테스트 7 통과 (2.97ms, 62.5MB)
테스트 8 통과 (2.84ms, 61.9MB)
테스트 9 통과 (1.27ms, 63.7MB)
테스트 10 통과 (1.86ms, 65.1MB)
테스트 11 통과 (1.82ms, 63.1MB)
테스트 12 통과 (1.92ms, 64.6MB)
테스트 13 통과 (1.96ms, 62.7MB)

 

 

 

 

 

split으로 한 칸씩 잘라서 배열 만든 후에 for문으로 번호 길이 - 4까지 *으로 바꾼 후에 joinToString으로 배열을 String으로 합친 후에 리턴하면 될 것 같다.

 

 

 

 

 

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

 

 

코딩테스트 연습 - 행렬의 덧셈

행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다. 2개의 행렬 arr1과 arr2를 입력받아, 행렬 덧셈의 결과를 반환하는 함수, solution을 완성해주세요

programmers.co.kr

 

 

 

 

 

class Solution {
    fun solution(arr1: Array<IntArray>, arr2: Array<IntArray>): Array<IntArray> {
        var answer = Array(arr1.size, {IntArray(arr1[0].size)});
        
        for (x in 0..arr1.size-1) {
            for (y in 0..arr1[x].size-1) {
                answer[x][y] = arr1[x][y] + arr2[x][y];
            }
        }
        return answer;
    }
}

 

테스트 1 통과 (0.02ms, 63.7MB)
테스트 2 통과 (0.04ms, 62.9MB)
테스트 3 통과 (0.11ms, 65.1MB)
테스트 4 통과 (0.08ms, 63.1MB)
테스트 5 통과 (0.05ms, 63.4MB)
테스트 6 통과 (0.08ms, 63.4MB)
테스트 7 통과 (0.02ms, 63.7MB)
테스트 8 통과 (0.06ms, 63.5MB)
테스트 9 통과 (0.41ms, 66MB)
테스트 10 통과 (0.34ms, 63.9MB)
테스트 11 통과 (0.13ms, 66.2MB)
테스트 12 통과 (0.16ms, 65.5MB)
테스트 13 통과 (0.13ms, 66.1MB)
테스트 14 통과 (0.16ms, 65.2MB)
테스트 15 통과 (0.19ms, 67.5MB)
테스트 16 통과 (0.16ms, 64.4MB)
테스트 17 통과 (4.38ms, 94.3MB)

 

 

 

 

 

Array 진짜 복잡하네..

2차원 배열을 선언하는 것도 자바와 달라서 어려웠다..

 

 

 

 

1차원 배열 선언은 Array(길이, {내용}) 이런 식으로 선언하는데,

2차원 배열 역시 이 모양을 그대로 사용한다.

그래서 Array(길이, {Array(길이, {내용})})으로 모양을 만들고,

자바는 길이 구할 때 length를 쓰지만 코틀린에서는 size를 쓴다.

그 외에는 비슷하고...

 

 

 

 

행렬의 덧셈은 똑같은 위치의 값들을 다 더하는 것이기 때문에 for문으로 구하면 된다.

 

 

 

 

 

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

 

 

코딩테스트 연습 - x만큼 간격이 있는 n개의 숫자

함수 solution은 정수 x와 자연수 n을 입력 받아, x부터 시작해 x씩 증가하는 숫자를 n개 지니는 리스트를 리턴해야 합니다. 다음 제한 조건을 보고, 조건을 만족하는 함수, solution을 완성해주세요.

programmers.co.kr

 

 

 

 

 

class Solution {
    fun solution(x: Int, n: Int): LongArray {
        var answer = LongArray(n)

        for (num in 1..n) {
            answer[num-1] = num.toLong() * x;
        }
        return answer
    }
}

 

테스트 1 통과 (0.01ms, 62.6MB)
테스트 2 통과 (0.02ms, 63.8MB)
테스트 3 통과 (0.02ms, 62.8MB)
테스트 4 통과 (0.02ms, 63.7MB)
테스트 5 통과 (0.03ms, 63MB)
테스트 6 통과 (0.01ms, 63.1MB)
테스트 7 통과 (0.03ms, 65MB)
테스트 8 통과 (0.02ms, 63.7MB)
테스트 9 통과 (0.03ms, 61.3MB)
테스트 10 통과 (0.01ms, 63.2MB)
테스트 11 통과 (0.05ms, 62.7MB)
테스트 12 통과 (0.02ms, 63.2MB)
테스트 13 통과 (0.03ms, 64.1MB)
테스트 14 통과 (0.06ms, 63MB)

 

 

 

 

 

이거 하나 푸는데 array에 관한 것도 엄청 찾아봤네...

 

 

 

 

 

x씩 점점 커진 숫자 배열이 n 길이까지 있으니까 for문으로 이용하여 문제를 풀었는데

Array인 answer에 값을 넣는 것이 어려웠다.

 

 

 

 

 

longArrayOf()는 그냥 정말 말 그대로 텅 빈 long형의 Array를 뜻하는거라서 내가 계속 n으로 사이즈를 지정하려고 해도 틀렸다고 나왔고,

계속 검색해보다가 LongArray()로 만드는 것인 것을 깨닳고 코드를 짰다.

 

 

 

 

그리고 long으로 계산을 해서 넣어야하기 때문에 for문 속에서 num이나 x를 long으로 형 변환을 한 후에 계산을 했다.

(계산 후에 long으로 변환하면 틀렸나고 나오기 때문에 미리 변환 후에 하는 것이 낫다)

 

 

 

 

 

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

 

 

코딩테스트 연습 - 직사각형 별찍기

이 문제에는 표준 입력으로 두 개의 정수 n과 m이 주어집니다. 별(*) 문자를 이용해 가로의 길이가 n, 세로의 길이가 m인 직사각형 형태를 출력해보세요. 제한 조건 n과 m은 각각 1000 이하인 자연수

programmers.co.kr

 

 

 

 

 

fun main(args: Array<String>) {
    val (a, b) = readLine()!!.split(' ').map(String::toInt)
    
    for (x in 1..b) {
        for (y in 1..a) {
            print("*");
        }
        println();
    }
}

 

테스트 1 통과 (161.86ms, 50.2MB)
테스트 2 통과 (149.95ms, 49.8MB)
테스트 3 통과 (203.91ms, 49.3MB)
테스트 4 통과 (219.12ms, 49.6MB)
테스트 5 통과 (193.55ms, 49.8MB)
테스트 6 통과 (183.95ms, 50.4MB)
테스트 7 통과 (178.82ms, 49.9MB)
테스트 8 통과 (212.59ms, 64.2MB)
테스트 9 통과 (252.06ms, 64.6MB)
테스트 10 통과 (169.45ms, 53.2MB)
테스트 11 통과 (231.77ms, 61.1MB)

 

 

 

 

 

코틀린 공부 시작..

 

 

 

 

 

for문 기본형 : for (요소 변수 in 컬렉션 또는 범위) { 반복할 본문 }

범위 지정은 숫자..숫자 이런 식으로 ..으로 하는 듯하고, 기본적으로 1씩 증가한다.

만약 2씩 증가하게 하고 싶다면 step 2를 뒤에 추가로 적으면 된다.

ex) for (i in 1..5 step 2) { }

 

 

 

 

그래서 a개씩 b줄로 출력하니까

바깥 for문의 범위는 b, 안쪽 for문의 범위는 a로 지정하여

안쪽 for문에서 print("*")로 별을 입력하고,

안쪽 for문이 끝나면 println()으로 줄 바꿈을 표시하여 출력하였다.

 

 

 

 

print()는 줄 바꿈 x

println()은 줄 바꿈 o

 

 

 

 

 

728x90

+ Recent posts