2021.03.08 연습

 

  • 사용언어 : java

 


class Solution {
    public int maximum69Number (int num) {
        
        String s = String.valueOf(num);
        int firstSix = s.indexOf('6');
        
        if (firstSix != -1) {

            StringBuilder sb = new StringBuilder(s);
            sb.setCharAt(firstSix, '9');
            
            s = sb.toString();
            
        }
        
        return Integer.parseInt(s);

    }
}

Runtime: 1 ms, faster than 58.32% of Java online submissions for Maximum 69 Number. Memory Usage: 35.5 MB, less than 97.03% of Java online submissions for Maximum 69 Number.

 

  • 다른 코드 참고

class Solution {
    public int maximum69Number (int num) {
        char[] nums = Integer.toString(num).toCharArray();
        for(int i=0;i<nums.length; i++){
            if(nums[i]=='6'){
                nums[i]='9';
                return Integer.valueOf(String.valueOf(nums));
            }
        }
       return num;
    }
}


class Solution {
    public int maximum69Number (int num) {
        
        // Convert num to string. Replace the first instance of 6 to 9. Then convert altered (String)num to (Integer)num
        // This only works because we are dealing with positive numbers.
        // You would never want to change a 9 to 6 because that would lower our number.
        return Integer.valueOf(Integer.toString(num).replaceFirst("6","9"));
    }
}

class Solution {
    public int maximum69Number (int num) {
        StringBuilder sb = new StringBuilder();
        
        sb.append(num);
        for(int i = 0 ; i < sb.length() ; i++){
            if(sb.charAt(i) != '9'){
                sb.setCharAt(i,'9');
                break;
            }
        }
        
        return Integer.parseInt(sb.toString());
    }
}

 



class Solution {
    public int[] sortArrayByParity(int[] A) {
        
        List<Integer> list = new ArrayList<>();
        
        for (int i : A) {
            if (i%2 == 0) {list.add(0, i);}
            else {list.add(i);}
        }
        
        int[] result = new int[list.size()];
        int c = 0;
        for (Integer a : list) {
            result[c++] = a;
         }
        
        
        return result;
            
        
    }
}

Runtime: 4 ms, faster than 8.19% of Java online submissions for Sort Array By Parity. Memory Usage: 39.9 MB, less than 56.90% of Java online submissions for Sort Array By Parity.

 

  • 다른 코드 참고

class Solution {
    public int[] sortArrayByParity(int[] A) {
        ArrayList<Integer> aa = new ArrayList<>();
        
        for(int i =0; i< A.length; i++){
            if(A[i] %2 == 0){
                aa.add(A[i]);
            }
        }
        
        for(int i =0; i< A.length; i++){
            if(A[i]%2 != 0){
                aa.add(A[i]);
            }
        }
        
        for(int j = 0; j<A.length; j++){
            A[j] = aa.get(j);
        }
        return A;
    }
}

 

Arrays.asList()로 만든 List에는 새로운 원소를 추가하거나 삭제할 수 없다.
새로운 List를 메모리 공간에 저장하는 것이 아니고 이미 존재하는 Fixed sized 배열의 주소를 가져와 그것을 list로 처리한다는 개념이다. 새로운 배열 객체를 만드는 것이 아니라 원본 배열의 주소값을 가져오게 된다. (asList()를 사용한 객체 수정시 원본 배열도 함께 바뀌게 될 것이다.)