본문 바로가기
알고리즘

[Algorithm] 6월 27일 알고리즘 연습 -에이젠

by eigen96 2022. 6. 27.
728x90

Lv. 1 숫자 문자열과 영단어 - 성공

0를 빠뜨리는 실수.

String.replace()를 적용한 문자열을 따로 할당을 안 하는 실수.

class Solution {
    public int solution(String s) {
        int answer = 0;
        
    
        String arr = s;
        arr = arr.replace("one","1");
        arr = arr.replace("two","2");
        arr =  arr.replace("three","3");
        arr = arr.replace("four","4");
        arr = arr.replace("five","5");
        arr = arr.replace("six","6");
        arr = arr.replace("seven", "7");
        arr = arr.replace("eight", "8");
        arr = arr.replace("nine", "9");
        System.out.println("s :" + arr);
        answer = Integer.parseInt(arr);
        return answer;
    }
}

 

 

class Solution {
    public int solution(String s) {
        int answer = 0;

        String arr = s;
        arr = arr.replace("zero","0");
        arr = arr.replace("one","1");
        arr = arr.replace("two","2");
        arr =  arr.replace("three","3");
        arr = arr.replace("four","4");
        arr = arr.replace("five","5");
        arr = arr.replace("six","6");
        arr = arr.replace("seven", "7");
        arr = arr.replace("eight", "8");
        arr = arr.replace("nine", "9");
        
        answer = Integer.parseInt(arr);
        return answer;
    }
}

 

Lv. 1 키패드 누르기 - 성공

내풀이(1) : 정확도 60%

대각선이 한칸이 아닌 두칸 이상인 경우 예외발생.

 

class Solution {
    public String solution(int[] numbers, String hand) {
        String answer = "";
        StringBuilder sb = new StringBuilder();
        int[] left = {3,0};//new int[2];
        int[] right = {3,2};
        ArrayList<Integer>[] arr = new ArrayList[12];
        for(int i = 0 ; i< 12; i++){
            arr[i] = new ArrayList<Integer>();
        }
        arr[0].add(3);
        arr[0].add(1);
        
        arr[1].add(0);
        arr[1].add(0);
        
        arr[2].add(0);
        arr[2].add(1);
        
        arr[3].add(0);
        arr[3].add(2);
        
        arr[4].add(1);
        arr[4].add(0);
        
        arr[5].add(1);
        arr[5].add(1);
        
        arr[6].add(1);
        arr[6].add(2);
        
        arr[7].add(2);
        arr[7].add(0);
        
        arr[8].add(2);
        arr[8].add(1);
        
        
        arr[9].add(2);
        arr[9].add(3);
        
        arr[10].add(3);
        arr[10].add(0);
        
        arr[11].add(3);
        arr[11].add(2);
        
        for(int i = 0 ; i < numbers.length ; i++){
            int buttonNumber = numbers[i];
            if(buttonNumber == 1 || buttonNumber == 4 || buttonNumber == 7){
                sb.append("L");
                left[0] = arr[buttonNumber].get(0);
                left[1] = arr[buttonNumber].get(1);
            }else if(buttonNumber == 3 || buttonNumber == 6 || buttonNumber == 9){
                sb.append("R");
                right[0] = arr[buttonNumber].get(0);
                right[1] = arr[buttonNumber].get(1);
            }else{
                //가운데 라인일 때
                int nextRow = arr[buttonNumber].get(0);
                int nextCol = arr[buttonNumber].get(1);
                
                double lengthLeft = (left[0] - nextRow)*(left[0] - nextRow) +(left[1] - nextCol)*(left[1] - nextCol) ;
                lengthLeft = Math.sqrt(lengthLeft);
                double lengthRigth = (right[0] - nextRow)*(right[0] - nextRow) +(right[1] - nextCol)*(right[1] - nextCol) ;
                lengthRigth = Math.sqrt(lengthRigth);
                
                String ss = hand.toUpperCase();
                char s = ss.charAt(0);
                if(lengthLeft > lengthRigth){
                    s = 'R';
                    right[0] = arr[buttonNumber].get(0);
                    right[1] = arr[buttonNumber].get(1);
                    sb.append('R');
                }else if(lengthLeft < lengthRigth){
                    s = 'L';
                    left[0] = arr[buttonNumber].get(0);
                    left[1] = arr[buttonNumber].get(1);
                    sb.append('L');
                }else if(lengthLeft == lengthRigth){
                    
                    if(hand.equals("right")){
                    right[0] = arr[buttonNumber].get(0);
                    right[1] = arr[buttonNumber].get(1);
                    sb.append('R');
                
                    }else{
                        left[0] = arr[buttonNumber].get(0);
                        left[1] = arr[buttonNumber].get(1);
                        sb.append('L');
                    }
                }  
            }
        }
        answer = sb.toString(); 
        return answer;
    }
}

 

좌표 설정 실수...

import java.io.*;
import java.util.*;

class Solution {
    public String solution(int[] numbers, String hand) {
        String answer = "";
        StringBuilder sb = new StringBuilder();
        int[] left = {3,0};//new int[2];
        int[] right = {3,2};
        ArrayList<Integer>[] arr = new ArrayList[12];
        for(int i = 0 ; i< 12; i++){
            arr[i] = new ArrayList<Integer>();
        }
        arr[0].add(3);
        arr[0].add(1);
        
        arr[1].add(0);
        arr[1].add(0);
        
        arr[2].add(0);
        arr[2].add(1);
        
        arr[3].add(0);
        arr[3].add(2);
        
        arr[4].add(1);
        arr[4].add(0);
        
        arr[5].add(1);
        arr[5].add(1);
        
        arr[6].add(1);
        arr[6].add(2);
        
        arr[7].add(2);
        arr[7].add(0);
        
        arr[8].add(2);
        arr[8].add(1);
        
        
        arr[9].add(2);
        arr[9].add(2);
        
        arr[10].add(3);
        arr[10].add(0);
        
        arr[11].add(3);
        arr[11].add(2);
        
        for(int i = 0 ; i < numbers.length ; i++){
            int buttonNumber = numbers[i];
            if(buttonNumber == 1 || buttonNumber == 4 || buttonNumber == 7){
                sb.append("L");
                left[0] = arr[buttonNumber].get(0);
                left[1] = arr[buttonNumber].get(1);
            }else if(buttonNumber == 3 || buttonNumber == 6 || buttonNumber == 9){
                sb.append("R");
                right[0] = arr[buttonNumber].get(0);
                right[1] = arr[buttonNumber].get(1);
            }else{
                //가운데 라인일 때
                int nextRow = arr[buttonNumber].get(0);
                int nextCol = arr[buttonNumber].get(1);
                
                int lengthLeft = Math.abs(left[0] - nextRow) + Math.abs(left[1] - nextCol) ;
                
                int lengthRigth = Math.abs(right[0] - nextRow) + Math.abs(right[1] - nextCol) ;
                
                
                String ss = hand.toUpperCase();
                char s = ss.charAt(0);
                
            
                
                
                
                if(lengthLeft > lengthRigth){
                    s = 'R';
                    right[0] = arr[buttonNumber].get(0);
                    right[1] = arr[buttonNumber].get(1);
                    sb.append('R');
                }else if(lengthLeft < lengthRigth){
                    s = 'L';
                    left[0] = arr[buttonNumber].get(0);
                    left[1] = arr[buttonNumber].get(1);
                    sb.append('L');
                }else if(lengthLeft == lengthRigth){
                    
                    if(hand.equals("right")){
                    right[0] = arr[buttonNumber].get(0);
                    right[1] = arr[buttonNumber].get(1);
                    sb.append('R');
                
                    }else{
                        left[0] = arr[buttonNumber].get(0);
                        left[1] = arr[buttonNumber].get(1);
                        sb.append('L');
                    }
                }  
            }
        }
        answer = sb.toString(); 
        return answer;
    }
}

 

 

728x90

댓글