기록하지 않았다면 잃어버릴 시간들
Home
  • 분류 전체보기 (184)
    • Lang (6)
      • c++ (2)
      • Java (2)
      • python (2)
    • 프레임워크 (18)
      • Spring (16)
      • JPA (2)
    • 알고리즘 (141)
      • 이론 (4)
      • 백준 (59)
      • Codility (13)
      • 프로그래머스 (65)
    • CS (4)
      • 운영체제 (0)
      • 자료구조 (0)
      • DB (4)
      • 네트워크 (0)
      • 보안 (0)
    • 기타 (7)
    • 프로젝트 (4)
      • 게시판 만들기로 배우는 Spring Data JP.. (4)
Home
  • 분류 전체보기 (184)
    • Lang (6)
      • c++ (2)
      • Java (2)
      • python (2)
    • 프레임워크 (18)
      • Spring (16)
      • JPA (2)
    • 알고리즘 (141)
      • 이론 (4)
      • 백준 (59)
      • Codility (13)
      • 프로그래머스 (65)
    • CS (4)
      • 운영체제 (0)
      • 자료구조 (0)
      • DB (4)
      • 네트워크 (0)
      • 보안 (0)
    • 기타 (7)
    • 프로젝트 (4)
      • 게시판 만들기로 배우는 Spring Data JP.. (4)
블로그 내 검색

기록하지 않았다면 잃어버릴 시간들

새로운 것을 배우는게 즐거운 개발자입니다.

  • 알고리즘/프로그래머스

    Programers 대충 만든 자판/ C++, JAVA

    2023. 3. 4.

    by. 내이름은 킹햄찌

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

     

    프로그래머스

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

    programmers.co.kr

     

    아이디어

    알파벳에 따른 최소 입력 키 횟수를 저장해두고 targets에 있는 알파벳에 따라 입력하는 키의 횟수를 더하면 된다.

    HashMap 사용

     

     C++

    #include <string>
    #include <vector>
    #include <unordered_map>
    using namespace std;
    
    vector<int> solution(vector<string> keymap, vector<string> targets) {
        vector<int> answer;
        unordered_map<char,int> key;
        for(auto iter : keymap){
            for(int i=0;i<iter.size();i++){
                if(key.find(iter[i]) == key.end()){
                    key[iter[i]] = i+1;
                    continue;
                }
                if(key[iter[i]] > i+1)
                    key[iter[i]] = i+1;
            }
        }
        for(auto iter : targets){
            int keyCnt = 0;
            for(int i=0;i<iter.size();i++){
                if(key.find(iter[i]) == key.end()){
                    keyCnt = -1;
                    break;
                }
                keyCnt += key[iter[i]];                
            }
            answer.push_back(keyCnt);
        }
        
        return answer;
    }

     

    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 (String key : keymap) {
                for (int i = 0; i < key.length(); i++) {
                    char ch = key.charAt(i);
                    if (!map.containsKey(ch)){
                        map.put(ch,i+1);
                        continue;
                    }
                    if(map.get(ch)>i){
                        map.replace(ch,i+1);
                    }
                    
                }
            }
    
            for(int i=0; i< targets.length;i++){
                int sum = 0;
                for(int j=0; j<targets[i].length();j++){
    
                    char ch = targets[i].charAt(j);
    
                    if(!map.containsKey(ch)){
                        sum = -1;
                        break;
                    }
                    sum+=map.get(ch);
                }
                answer[i] = sum;
            }
    
            return answer;
        }
    }

    '알고리즘 > 프로그래머스' 카테고리의 다른 글

    Programers 덧칠하기/ C++  (0) 2023.03.04
    Programers 바탕화면 정리/ C++  (0) 2023.03.04
    Programers 연속 펄스 부분 수열의 합/ C++  (0) 2023.03.04
    Programers 카드 뭉치 / C++, Java  (0) 2023.02.19
    Programers 미로 탈출/ C++  (0) 2023.02.19

    댓글

    관련글

    • Programers 덧칠하기/ C++ 2023.03.04
    • Programers 바탕화면 정리/ C++ 2023.03.04
    • Programers 연속 펄스 부분 수열의 합/ C++ 2023.03.04
    • Programers 카드 뭉치 / C++, Java 2023.02.19
    맨 위로
전체 글 보기
Tistory 로그인
Tistory 로그아웃
로그아웃 글쓰기 관리

Today

Total

Powered by ⓒ Kakao Corp.

Designed by Nana
블로그 이미지
내이름은 킹햄찌

티스토리툴바