[프로그래머스(Programmers)][Java,Python] (Lv1) 대충 만든 자판

728x90

 

https://school.programmers.co.kr/learn/courses/30/lessons/160586?language=java

 

1. Java

import java.util.*;
class Solution {
    public int[] solution(String[] keymap, String[] targets) {
        int[] answer = new int[targets.length];
        HashMap<Character,Integer> map = new HashMap<>();
        /* for ( int i = 0; i < keymap.length; ++i ) {
            String str = keymap[i];
            for ( int j = 0; j < str.length(); ++j ) {
                char chr = str.charAt(j);
                Integer num = map.get(chr);
                if ( num == null || num > j+1 ) {
                    map.put(chr, j+1);
                }
            }
        }
        for ( int i = 0; i < targets.length; ++i ) {
            String str = targets[i];
            int ans = 0;
            for ( int j = 0; j < str.length(); ++j ) {
                char chr = str.charAt(j);
                if ( map.containsKey(chr) ) {
                    ans += map.get(chr);
                } else {
                    ans = -1;
                    break;
                }
            }
            answer[i] = ans;
        } */
        for ( String str : keymap ) {
            int idx = 0;
            for ( char chr : str.toCharArray() ) {
                idx++;
                Integer num = map.get(chr);
                if ( num == null || num > idx ) {
                    map.put(chr, idx);
                }
            }
        }
        int i = 0;
        for ( String str : targets ) {
            int cnt = 0;
            for ( char chr : str.toCharArray() ) {
                /* if ( map.containsKey(chr) ) {
                    cnt += map.get(chr);
                } else {
                    cnt = -1;
                    break;
                } */
                Integer val = map.get(chr);
                if ( val == null ) {
                    cnt = -1;
                    break;
                } else {
                    cnt += map.get(chr);
                }
            }
            answer[i++] = cnt;
        }
        return answer;
    }
}

 

2. Python

def solution(keymap, targets):
    answer = []
    d = {}
    for s in keymap :
        # for j in range(len(s)) :
        #    c = s[j]
        #    n = d.get(c)
        #    if n == None or n > j+1 :
        #        d[c] = j+1
        i = 0
        for c in s :
            i += 1
            n = d.get(c)
            if n == None or n > i :
                d[c] = i
    for s in targets :
        a = 0
        for c in s :
            v = d.get(c)
            if v == None :
                a = -1
                break
            else :
                a += v
        answer.append(a)
    return answer

 

반응형