일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
Tags
- 아스키코드
- 프로그래머스
- HashMap
- 배열
- 구현
- 알고리즘
- Queue
- Stack
- 백트래킹
- 백준
- 문자열
- 다이나믹프로그래밍
- 완전탐색
- SQL
- 시뮬레이션
- BufferedReader
- LIS
- 탐색
- 브루트포스
- 다리 만들기
- 그리디
- 스택
- Java
- 빅데이터
- BFS
- 새벽코딩
- dfs
- DP
- Python
- oracle
Archives
- Today
- Total
새벽코딩
[프로그래머스] 문자열 내 마음대로 정렬하기 (JAVA) 본문
반응형
https://school.programmers.co.kr/learn/courses/30/lessons/12915
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
※ JAVA 코드 (문자열 내 마음대로 정렬하기)
import java.io.*;
import java.util.*;
class Solution {
public String[] solution(String[] strings, int n) {
String[] answer = new String[strings.length];
Map<String, Character> map = new TreeMap<>();
int idx = 0;
for(int i = 0; i < strings.length; i++){
// map에 문자열과 인덱스 n에 있는 문자를 담는다
map.put(strings[i], strings[i].charAt(n));
}
// map을 value로 정렬 -> 같을경우 key의 사전순
List<Map.Entry<String, Character>> entries = new LinkedList<>(map.entrySet());
entries.sort(((o1, o2) -> map.get(o1.getKey()) - map.get(o2.getKey())));
for(Map.Entry<String, Character> entry : entries){
answer[idx++] = entry.getKey();
}
return answer;
}
}
※ 생각정리
자료구조를 써서 푸는 문제는 왠만하면 정리를 하려고 한다.
1. TreeMap에 값을 담아 담을때부터 사전순으로 문자열을 정렬해둔다 (TreeMap에 담으면 키값이 자동으로 사전순 정렬됨)
2. value를 기준으로 정렬한다. (람다식을 사용했다.)
3. 정렬한 entries들을 뽑아서 answer 배열에 담는다.
- 새벽코딩 -
반응형
'알고리즘' 카테고리의 다른 글
[프로그래머스] 예상 대진표 (JAVA) (level2) (0) | 2023.10.08 |
---|---|
[프로그래머스] 점프와 순간 이동 (JAVA) (1) | 2023.10.05 |
[프로그래머스] [1차] 비밀지도 (JAVA) (0) | 2023.09.14 |
[프로그래머스] 숫자 문자열과 영단어 (JAVA) (카카오) (0) | 2023.09.10 |
[프로그래머스] 영어 끝말잇기 (JAVA) (level2) (0) | 2023.09.10 |
Comments