01-08 08:57
Recent Posts
Recent Comments
Tags
- ๋ฐ์ดํฐ๋ฒ ์ด์ค
- JOBํ๊ณ
- SQL
- ์คํฝ์ค๋น
- API๋ง์ผํ๋ ์ด์ค
- ํ์ด์๊ณต๋ชจ์
- ํ๋ก๋ณด๋ ธ
- ํ์ด์
- ict๊ณต๋ชจ์
- linux
- appetizer
- ์๋ฐ
- Naver Cloud
- ICT๋ฉํ ๋ง
- ์ด๋ธ์
- mysql
- API MarketPlace ๊ธ๋ก๋ฒ ์ํฌํฐ์ฆ
- ์คํฝ๋ ํ
- Spring
- DATABASE
- DB
- python
- ์๋์ด๋ ธ
- ์จ์ผ๋ํ
- Java
- RaspberryPi
- ํ์ด์ฌ
- TSQL
- ICT
- ์กํ๊ณ
- Today
- Total
miinsun
[Programmers] ๋ฉ๋ด ๋ฆฌ๋ด์ผ - JAVA (Map / ์งํฉ) ๋ณธ๋ฌธ
Algorithm/Programmers
[Programmers] ๋ฉ๋ด ๋ฆฌ๋ด์ผ - JAVA (Map / ์งํฉ)
miinsun 2022. 5. 18. 16:362021 KAKAO BLIND RECRUITMENT
๐ฌ ๋ฌธ์ ์ค๋ช
๋ ์คํ ๋์ ์ด์ํ๋ ์ค์นดํผ๋ ์ฝ๋ก๋19๋ก ์ธํ ๋ถ๊ฒฝ๊ธฐ๋ฅผ ๊ทน๋ณตํ๊ณ ์ ๋ฉ๋ด๋ฅผ ์๋ก ๊ตฌ์ฑํ๋ ค๊ณ ๊ณ ๋ฏผํ๊ณ ์์ต๋๋ค. ๊ธฐ์กด์๋ ๋จํ์ผ๋ก๋ง ์ ๊ณตํ๋ ๋ฉ๋ด๋ฅผ ์กฐํฉํด์ ์ฝ์ค์๋ฆฌ ํํ๋ก ์ฌ๊ตฌ์ฑํด์ ์๋ก์ด ๋ฉ๋ด๋ฅผ ์ ๊ณตํ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค.
์ด๋ค ๋จํ๋ฉ๋ด๋ค์ ์กฐํฉํด์ ์ฝ์ค์๋ฆฌ ๋ฉ๋ด๋ก ๊ตฌ์ฑํ๋ฉด ์ข์ ์ง ๊ณ ๋ฏผํ๋ "์ค์นดํผ"๋ ์ด์ ์ ๊ฐ ์๋๋ค์ด ์ฃผ๋ฌธํ ๋ ๊ฐ์ฅ ๋ง์ด ํจ๊ป ์ฃผ๋ฌธํ ๋จํ๋ฉ๋ด๋ค์ ์ฝ์ค์๋ฆฌ ๋ฉ๋ด๋ก ๊ตฌ์ฑํ๊ธฐ๋ก ํ์ต๋๋ค.
๋จ, ์ฝ์ค์๋ฆฌ ๋ฉ๋ด๋ ์ต์ 2๊ฐ์ง ์ด์์ ๋จํ๋ฉ๋ด๋ก ๊ตฌ์ฑํ๋ ค๊ณ ํฉ๋๋ค. ๋ํ, ์ต์ 2๋ช ์ด์์ ์๋์ผ๋ก๋ถํฐ ์ฃผ๋ฌธ๋ ๋จํ๋ฉ๋ด ์กฐํฉ์ ๋ํด์๋ง ์ฝ์ค์๋ฆฌ ๋ฉ๋ด ํ๋ณด์ ํฌํจํ๊ธฐ๋ก ํ์ต๋๋ค.
์๋ฅผ ๋ค์ด, ์๋ 6๋ช ์ด ์ฃผ๋ฌธํ ๋จํ๋ฉ๋ด๋ค์ ์กฐํฉ์ด ๋ค์๊ณผ ๊ฐ๋ค๋ฉด,
(๊ฐ ์๋์ ๋จํ๋ฉ๋ด๋ฅผ 2๊ฐ ์ด์ ์ฃผ๋ฌธํด์ผ ํ๋ฉฐ, ๊ฐ ๋จํ๋ฉ๋ด๋ A ~ Z์ ์ํ๋ฒณ ๋๋ฌธ์๋ก ํ๊ธฐํฉ๋๋ค.)
๊ฐ์ฅ ๋ง์ด ํจ๊ป ์ฃผ๋ฌธ๋ ๋จํ๋ฉ๋ด ์กฐํฉ์ ๋ฐ๋ผ "์ค์นดํผ"๊ฐ ๋ง๋ค๊ฒ ๋ ์ฝ์ค์๋ฆฌ ๋ฉ๋ด ๊ตฌ์ฑ ํ๋ณด๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๊ฐ ์๋๋ค์ด ์ฃผ๋ฌธํ ๋จํ๋ฉ๋ด๋ค์ด ๋ฌธ์์ด ํ์์ผ๋ก ๋ด๊ธด ๋ฐฐ์ด orders, "์ค์นดํผ"๊ฐ ์ถ๊ฐํ๊ณ ์ถ์ดํ๋ ์ฝ์ค์๋ฆฌ๋ฅผ ๊ตฌ์ฑํ๋ ๋จํ๋ฉ๋ด๋ค์ ๊ฐฏ์๊ฐ ๋ด๊ธด ๋ฐฐ์ด course๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋,
"์ค์นดํผ"๊ฐ ์๋ก ์ถ๊ฐํ๊ฒ ๋ ์ฝ์ค์๋ฆฌ์ ๋ฉ๋ด ๊ตฌ์ฑ์ ๋ฌธ์์ด ํํ๋ก ๋ฐฐ์ด์ ๋ด์ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด ์ฃผ์ธ์.
๐ซ ์ ํ ์ฌํญ
- orders ๋ฐฐ์ด์ ํฌ๊ธฐ๋ 2 ์ด์ 20 ์ดํ์ ๋๋ค.
- orders ๋ฐฐ์ด์ ๊ฐ ์์๋ ํฌ๊ธฐ๊ฐ 2 ์ด์ 10 ์ดํ์ธ ๋ฌธ์์ด์
๋๋ค.
- ๊ฐ ๋ฌธ์์ด์ ์ํ๋ฒณ ๋๋ฌธ์๋ก๋ง ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
- ๊ฐ ๋ฌธ์์ด์๋ ๊ฐ์ ์ํ๋ฒณ์ด ์ค๋ณตํด์ ๋ค์ด์์ง ์์ต๋๋ค.
- course ๋ฐฐ์ด์ ํฌ๊ธฐ๋ 1 ์ด์ 10 ์ดํ์
๋๋ค.
- course ๋ฐฐ์ด์ ๊ฐ ์์๋ 2 ์ด์ 10 ์ดํ์ธ ์์ฐ์๊ฐ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌ๋์ด ์์ต๋๋ค.
- course ๋ฐฐ์ด์๋ ๊ฐ์ ๊ฐ์ด ์ค๋ณตํด์ ๋ค์ด์์ง ์์ต๋๋ค.
- ์ ๋ต์ ๊ฐ ์ฝ์ค์๋ฆฌ ๋ฉ๋ด์ ๊ตฌ์ฑ์ ๋ฌธ์์ด ํ์์ผ๋ก ๋ฐฐ์ด์ ๋ด์ ์ฌ์ ์์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌํด์ return ํด์ฃผ์ธ์.
- ๋ฐฐ์ด์ ๊ฐ ์์์ ์ ์ฅ๋ ๋ฌธ์์ด ๋ํ ์ํ๋ฒณ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌ๋์ด์ผ ํฉ๋๋ค.
- ๋ง์ฝ ๊ฐ์ฅ ๋ง์ด ํจ๊ป ์ฃผ๋ฌธ๋ ๋ฉ๋ด ๊ตฌ์ฑ์ด ์ฌ๋ฌ ๊ฐ๋ผ๋ฉด, ๋ชจ๋ ๋ฐฐ์ด์ ๋ด์ return ํ๋ฉด ๋ฉ๋๋ค.
- orders์ course ๋งค๊ฐ๋ณ์๋ return ํ๋ ๋ฐฐ์ด์ ๊ธธ์ด๊ฐ 1 ์ด์์ด ๋๋๋ก ์ฃผ์ด์ง๋๋ค.
๐จ ์ ์ถ๋ ฅ ์
- ์
์ถ๋ ฅ ์ 1
- ๋ฌธ์ ์ ์์์ ๊ฐ์ต๋๋ค.
- ์
์ถ๋ ฅ ์ 2
- AD๊ฐ ์ธ ๋ฒ, CD๊ฐ ์ธ ๋ฒ, ACD๊ฐ ๋ ๋ฒ, ADE๊ฐ ๋ ๋ฒ, XYZ ๊ฐ ๋ ๋ฒ ์ฃผ๋ฌธ๋์ต๋๋ค.
- ์๋ฆฌ 5๊ฐ๋ฅผ ์ฃผ๋ฌธํ ์๋์ด 1๋ช ์์ง๋ง, ์ต์ 2๋ช ์ด์์ ์๋์๊ฒ์ ์ฃผ๋ฌธ๋ ๊ตฌ์ฑ๋ง ์ฝ์ค์๋ฆฌ ํ๋ณด์ ๋ค์ด๊ฐ๋ฏ๋ก, ์๋ฆฌ 5๊ฐ๋ก ๊ตฌ์ฑ๋ ์ฝ์ค์๋ฆฌ๋ ์๋ก ์ถ๊ฐํ์ง ์์ต๋๋ค.
- ์
์ถ๋ ฅ ์ 3
- WX๊ฐ ๋ ๋ฒ, XY๊ฐ ๋ ๋ฒ ์ฃผ๋ฌธ๋์ต๋๋ค.
- 3๋ช ์ ์๋ ๋ชจ๋ ๋จํ๋ฉ๋ด๋ฅผ 3๊ฐ์ฉ ์ฃผ๋ฌธํ์ง๋ง, ์ต์ 2๋ช ์ด์์ ์๋์๊ฒ์ ์ฃผ๋ฌธ๋ ๊ตฌ์ฑ๋ง ์ฝ์ค์๋ฆฌ ํ๋ณด์ ๋ค์ด๊ฐ๋ฏ๋ก, ์๋ฆฌ 3๊ฐ๋ก ๊ตฌ์ฑ๋ ์ฝ์ค์๋ฆฌ๋ ์๋ก ์ถ๊ฐํ์ง ์์ต๋๋ค.
- ๋, ๋จํ๋ฉ๋ด๋ฅผ 4๊ฐ ์ด์ ์ฃผ๋ฌธํ ์๋์ ์์ผ๋ฏ๋ก, ์๋ฆฌ 4๊ฐ๋ก ๊ตฌ์ฑ๋ ์ฝ์ค์๋ฆฌ ๋ํ ์๋ก ์ถ๊ฐํ์ง ์์ต๋๋ค.
โ
๐ป Solution.java
import java.util.*;
public class Main {
// ๋ฉ๋ด์ ์กฐํฉ ๊ตฌํ๊ธฐ
public void combi(String order, String others, int cnt, HashMap<String, Integer> map) {
if(cnt == 0) {
// ์ด๋ฏธ ์๋ ์กฐํฉ์ด๋ฉด + 1, ์๋ก์ด ์กฐํฉ์ด๋ฉด 1๋ก ์ง์
map.put(order, map.getOrDefault(order, 0) + 1);
return;
}
else {
for(int i = 0; i < others.length(); i++) {
combi(order + others.charAt(i), others.substring(i + 1), cnt - 1, map);
}
}
}
public String[] solution(String[] orders, int[] course) {
// ๋จํ๋ฉ๋ด ์กฐํฉ ์ค๋ฆ์ฐจ์ ์ ๋ ฌํ๊ธฐ
for(int i = 0 ; i < orders.length; i++) {
char[] arr = orders[i].toCharArray();
Arrays.sort(arr);
orders[i] = String.valueOf(arr);
}
// ์ ๋ต์ ์ ์ฅํด์ค ๋ฆฌ์คํธ ์์ฑ
ArrayList<String> result = new ArrayList<>();
for(int i : course) {
HashMap <String, Integer> map = new HashMap<>();
// ์ฝ์ค ๊ธธ์ด๋ณ ๋ฉ๋ด ์์ฑ
for(String order : orders) {
combi("", order, i, map);
}
// ์ ์ผ ๋ง์ด ์ ํ ๋ ์ฝ์ค ํ์
Collection<Integer> orderCnt = map.values();
int max = Collections.max(orderCnt);
// 1๋ฒ ์ด์ ์ฃผ๋ฌธ๋ ๋ฉ๋ด์ผ๋๋ง ์ง์ ๊ฐ๋ฅ
if(max > 1) {
for(String key : map.keySet()) {
// ๊ฐ์ฅ ๋ง์ด ์ ํ๋ ๋ฉ๋ด๋ฅผ ๋ฐ๊ฒฌํ๋ฉด ์ ๋ต๋ฆฌ์คํธ์ ์ถ๊ฐ
if(map.get(key) == max)
result.add(key);
}
}
}
// ์ ๋ต๋ฆฌ์คํธ ์ ๋ ฌ
Collections.sort(result);
String[] answer = new String[result.size()];
for(int i = 0; i < answer.length; i++) {
answer[i] = result.get(i);
}
return answer;
}
public static void main(String[] args) {
Main main = new Main();
String[] orders = {"ABCFG", "AC", "CDE", "ACDE", "BCFG", "ACDEH"};
int[] course = {2, 3, 4};
System.out.println(main.solution(orders, course));
}
}
'Algorithm > Programmers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Programmers] ์ซ์์ ํํ - JAVA (์ฌ๋ผ์ด๋ฉ ์๋์ฐ, ํฌํฌ์ธํฐ) (0) | 2022.05.19 |
---|---|
[Programmers] JadenCase ๋ฌธ์์ด ๋ง๋ค๊ธฐ - JAVA (๋ฌธ์์ด ์ฒ๋ฆฌ) (0) | 2022.05.19 |
[Programmers] ์ง์ง์ด ์ ๊ฑฐํ๊ธฐ - JAVA (Stack/Queue) (0) | 2022.05.08 |
[Programmers] ๊ธฐ๋ฅ๊ฐ๋ฐ - JAVA (Stack/Queue) (0) | 2022.05.08 |
[ํ๋ก๊ทธ๋๋จธ์ค] Java 2019 KAKAO ์คํ์ฑํ ๋ฐฉ (0) | 2021.12.06 |
Comments