본문 바로가기
백준 Algorithm

[프로그래머스] 대충 만든 자판 Java 풀이

by Echung 2023. 3. 13.

Problem

대충 만든 자판

 

Solution

 휴대폰 자판을 List에 저장하고 주어진 특정 문자열을 입력하여 키를 최소 몇 번 누르는지를 구하면 되는 문제이다. 

1. List를 생성하고 keymap을 문자들을 List에 주소에 넣어주면서 중간에 키를 누르는 최솟값을 값으로 넣어준다.

2. 키보드 값을 List에 다 넣었으므로 targets에 있는 특정 문자열과 비교하여 키를 누르는 값을 구한다.

3. 만약 특정 문자열이 키보드 값 List에 없을 경우 answer에 -1을 넣어주고 break 해준다. (굳이 불필요한 뒷 작업을 할 필요 없도록)

4. 키를 누르는 최솟값을 answer에 저장하여 마지막에 answer을 출력해 준다.

 

class Solution {
    public int[] solution(String[] keymap, String[] targets) {
        int[] answer = new int[targets.length];
        int[] list = new int[26];;
        
        for(int i = 0; i < keymap.length; i++) {
            String keymapStr = keymap[i];
            int count = 1;
            
            for(int j = 0; j < keymap[i].length(); j++) {
                int temp = keymapStr.charAt(j) - 'A';
                if(list[temp] == 0 || list[temp] >= count) {
                    list[temp] = count;
                }
                count++;
            }
        }
        
        for(int i = 0; i < targets.length; i++) {
            String targetsStr = targets[i];
            int num = 0;
            
            for(int k = 0; k < targetsStr.length(); k++) {
                int temp = targetsStr.charAt(k) - 'A';
                
                if(num != -1 && list[temp] != 0) {
                    num += list[temp];
                } else {
                    num = -1;
                    break;
                }
            }
            
            answer[i] = num;    
        }
           
        
        return answer;
    }
}

실행 결과

마치며

 for문을 사용해서 하는 간단한 풀이 방법이다. 만약 더 좋은 다른 방법이 있거나 틀린 부분이 있으면 편하게 댓글 남겨주시면 감사합니다 ~

 

 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

반응형