JAVA 코테 입문편

Saemi Min·2023년 4월 14일
0

문제1

암호 해독

내가 쓴 코드 - 너무 느림

class Solution {
    public String solution(String cipher, int code) {
        String answer = "";
        for(int i=1;i<=cipher.length();i++){
            if((i)%(code)==0){
                answer+=cipher.charAt(i-1);
            }
        }
        return answer;
    }
}

그래서!!!!
자바 문법 중 substring(from, to)를 써서 하면 훨씬 빠름!!

class Solution {
    public String solution(String cipher, int code) {
        String answer = "";

        for (int i = code; i <= cipher.length(); i = i + code) {
            answer += cipher.substring(i - 1, i);
        }

        return answer;
    }
}

문제2

암호 해독

내가 쓴 코드 - 너무 느림

class Solution {
    public String solution(String my_string, int num1, int num2) {
        String answer = "";
        char a=my_string.charAt(num1);
        char b=my_string.charAt(num2);
        for(int i=0;i<my_string.length();i++){
            if(i==num1){
                answer+=b;
            }
            else if(i==num2){
                answer+=a;
            }
            else{
                answer+=my_string.charAt(i);
            }
        }
        return answer;
    }
}

그래서!!!!
아래와 같이 작성하면 훨씬 빠름!!

class Solution {
    public String solution(String my_string, int num1, int num2) {
        String answer = "";

        char[] ch = my_string.toCharArray();

        ch[num1] = my_string.charAt(num2);
        ch[num2] = my_string.charAt(num1);

        answer = String.valueOf(ch);
        return answer;
    }
}

SWAP 함수를 쓴다면?
아래와 같은 코드로 쓰면 됨!!

import java.util.*;

class Solution {
    public String solution(String myString, int num1, int num2) {
        List<String> list = Arrays.asList(myString.split(""));
        
        Collections.swap(list, num1, num2);
        return String.join("", list);
    }
}

문제3

A로 B 만들기

내가 쓴 코드 - 해시맵 사용 (문법 공부)

import java.util.HashMap;
import java.util.Map;

class Solution {
    public int solution(String before, String after) {
        int res=0;
        String[] a=before.split("");
        String[] b=after.split("");
        
        Map<String, Integer> map = new HashMap<String, Integer>();
        for(String key : a) {
            map.put(key, map.getOrDefault(key, 0)+1);
        }
        System.out.println(map);
        Map<String, Integer> map1 = new HashMap<String, Integer>();
        for(String key : b) {
            map1.put(key, map1.getOrDefault(key, 0)+1);
        }
        System.out.println(map1);
        
        for(String key:map.keySet()){
            if (map.get(key) != map1.get(key)){
                res=0;
                return res;
                
            }
            
        }
        
        res=1;
        return res;
    }
}

하지만!!
아래와 같이 작성하면 훨씬 빠르고 간단함!!

import java.util.Arrays;
class Solution {
    public int solution(String before, String after) {
        char[] a = before.toCharArray();
        char[] b = after.toCharArray();
        Arrays.sort(a);
        Arrays.sort(b);

        return new String(a).equals(new String(b)) ? 1 :0;
    }
}
profile
I believe in myself.

0개의 댓글