본문 바로가기
알고리즘

항해 99 18일차 TIL( 대충 만든 자판 / 프로그래머스 )

by 순원이 2024. 4. 15.

문제         

 

프로그래머스

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

programmers.co.kr

1 번째 시도   

  • 자료구조는 HashMap을 사용한다.
  • HashMap에 알파벳마다 눌러야 하는 최소 횟수를 저장한다.
  • Keymap의 알파벳을 탐색하며 알파벳마다 눌러야 하는 최소 횟수를 업데이트 해간다.
import java.util.*;

class Solution {
    public int[] solution(String[] keymap, String[] targets) {
        int n = keymap.length;
        HashMap<Character, Integer> map = new HashMap<>();

        for (int i = 0; i < n; i++) {
            for (int j = 0; j < keymap[i].length(); j++) {
                char key = keymap[i].charAt(j);
                if (!map.containsKey(key)) {
                    map.put(key, j + 1);
                } else {
                    int previousPosition = map.get(key);
                    map.put(key, Math.min(previousPosition, j + 1));
                }
            }
        }

        int[] result = new int[targets.length];

        for (int i = 0; i < targets.length; i++) {
            for (int j = 0; j < targets[i].length(); j++) {
                char targetChar = targets[i].charAt(j);
                if (map.containsKey(targetChar)) {
                    result[i] += map.get(targetChar);
                } else {
                    result[i] = -1;
                    break; 
                }
            }
        }

        return result;
    }
}

 

알지 못했던 함수

  • HashMap 해당 Key가 포함되어 있는지  확인하는 함수
    •  
    • boolean containsKey(Object Key)
  • HashMap 해당 Value가 포함되어 있는지 확인하는 함수
    • boolean containsValue(Object Value)
  • char → String 
    • change = String.valueOf(cr);
      change = Character.toString(cr);
  • String → char
    • char[] chr = str.toCharArray();
  • 배열 특정 값으로 꽉채우기
    • Arrays.fill()