💡 오늘의 학습 키워드
- 문자열
- TreeMap
- 정렬
✅ 오늘 공부한 내용
- 오늘은 배열에 대해 공부를 했다.
- 배열의 다양한 정렬 방법에 대해 공부했다.
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
- 오늘의 프로그래머스 문제! 문자열 내 마음대로 정렬하기
👀 오늘의 회고
🤣 오늘의 문제점
- key와 value에 대해 어떻게 배열할 것인가?
- 어떤 배열이 순서대로 저장할 수 있는가?
- 배열의 key 값과 value 값을 추출해 어떻게 활용할 수 있는가?
- 에 대한 공부를 하게 되었다. 해당 부분들에 대해 자세하고 정확하게 아는 지식이 없었기에 다시 복습하였다.
🔥 어떤 시도를 했는가?
- 1차로 HashMap을 사용했으나 sort를 몇 번 사용해야 한다는 번거로움이 생겼다.
- 그래서 다른 방법을 찾아보았다. 해보니 TreeMap은 key 값을 자동 정렬해준다는 것을 알게 되었다.
- 초반에 실수로 strings.charAt(n)으로 키를 설정했다가 중복 키 입력이 되지 않았기에 key와 value 위치를 바꿔주었다.
- ArrayList를 사용하여 keySet을 알파벳 순으로 담아줬다.(중복되는 value가 있을 때 앞에 배치해주기 위해서)
- 2차로 할 때는 잘 정렬됨을 확인 이후 람다를 사용하여 value 값 정렬로 배치해주었다.
- 그 이후는 for문을 돌려서 해당 값을 answer 배열에 넣어 주었다.
- 아래는 완성 코드✨
import java.util.*;
class Solution {
public String[] solution(String[] strings, int n) {
TreeMap <String, String> tm = new TreeMap<>();
int len = strings.length;
for(int i = 0; i < len; i++){
tm.put(strings[i], strings[i].charAt(n) + "");
}
List<String> keySet = new ArrayList<>(tm.keySet());
keySet.sort((o1, o2) -> tm.get(o1).compareTo(tm.get(o2)));
String[] answer = new String[len];
int cnt = 0;
for(String key : keySet){
answer[cnt++] = key;
}
return answer;
}
}
👏 무엇을 새로 알았는가?
- TreeMap 사용법
- keySet으로 key 값들만 저장하는 법
- 람다식을 이용한 value 정렬
// TreeMap 사용한 방법
import java.util.*;
TreeMap <String, String> tm = new TreeMap<>();
tm.put(strings[i], strings[i].charAt(n) + "");
// TreeMap Key를 ArrayList에 저장하기
List<String> keySet = new ArrayList<>(tm.keySet());
// TreeMap Value 값으로 저장하여 배열 정렬하기
// TreeMap Value 값 가져오는 법 -> tm.get(o1)
// o1이 key이다. key 값으로 value 값 가져온다.
keySet.sort((o1, o2) -> tm.get(o1).compareTo(tm.get(o2)));
- (그런데 다른 사람 풀이 보기를 하니 엄청난 분들이 많았다.. 역시 보고 배울 게 많은 것 같다. 꼭 한번 참고해보길..!)
👩💻 내일은 무엇을 학습할 것인가?
- 내일은 오늘 한 거 다른 분들 소스 코드 학습해보기
- 항해 99 코테 문제 미리 풀어서 온라인 미리 준비하기!
- 프로그래머스 못 푼 문제 마저 풀기
- 자소서 점검 😭😭😭😭
'개인 공부 > TIL' 카테고리의 다른 글
[ TIL - PGS ] 99클럽 코테 스터디 5일차 TIL + 오늘의 학습 가이드 (0) | 2024.07.26 |
---|---|
[ TIL - PGS ] 99클럽 코테 스터디 4일차 TIL + 오늘의 학습 가이드 (0) | 2024.07.25 |
[ TIL - PGS ] 99클럽 코테 스터디 2일차 TIL + 오늘의 학습 가이드 (0) | 2024.07.23 |
[ TIL - PGS ] 99클럽 코테 스터디 1일차 TIL + 오늘의 학습 가이드 (0) | 2024.07.22 |
[ TIL ] 2023.06.08 TIL + 지난 회고 및 일기 (0) | 2023.06.08 |