개인 공부/TIL
[ TIL - PGS ] 99클럽 코테 스터디 24일차 TIL + 오늘의 학습 가이드
킴도비
2024. 8. 14. 21:54
💡 오늘의 학습 키워드
- 그래프
✅ 오늘 공부한 내용
- 오늘의 프로그래머스 문제! 대충 만든 자판
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
👀 오늘의 회고
🤣 오늘의 문제점
- keyMap에 대해서 복잡하게 생각했었는데 조금 더 간단하게 생각해볼걸! 이라 느꼈다.
🔥 어떤 시도를 했는가?
- 원래는 charAt으로 하나씩 비교하려고 했는데 HashMap으로 저장한 후 비교하는 방법이 제일 빨라 그 방법으로 선택하게 되었다.
import java.util.*;
class Solution {
public int[] solution(String[] keymap, String[] targets) {
// 각 문자가 각 키에서 최소 몇 번 눌러야 하는지를 저장하는 맵
Map<Character, Integer> minPressMap = new HashMap<>();
for (String key : keymap) {
for (int i = 0; i < key.length(); i++) {
char ch = key.charAt(i);
int pressCount = i + 1; // 해당 문자를 만들기 위한 키 누름 횟수
// 이미 저장된 값보다 작은 값이 있는 경우 업데이트
if (minPressMap.containsKey(ch)) {
minPressMap.put(ch, Math.min(minPressMap.get(ch), pressCount));
} else {
minPressMap.put(ch, pressCount);
}
}
}
// 각 타겟 문자열에 대해 최소 키 누름 횟수를 계산
int[] result = new int[targets.length];
for (int i = 0; i < targets.length; i++) {
String target = targets[i];
int totalPress = 0;
boolean isPossible = true;
for (int j = 0; j < target.length(); j++) {
char ch = target.charAt(j);
// 만약 해당 문자를 생성할 수 없다면 -1로 처리
if (!minPressMap.containsKey(ch)) {
isPossible = false;
break;
}
// 해당 문자를 생성하기 위한 키 누름 횟수 추가
totalPress += minPressMap.get(ch);
}
// 작성 불가능하면 -1, 가능하면 최소 누름 횟수 저장
result[i] = isPossible ? totalPress : -1;
}
return result;
}
}
👩💻 내일은 무엇을 학습할 것인가?
- 항해 99 문제 풀기
- 공고 지원하기
- 책 읽기