안녕하세요!
이번에도 Programmers 문제입니다.
이번 문제는 2019 카카오톡 개발자 겨울 인턴십에 나온 문제라고 합니다.
이번에도 별 다른 설명 없이 기록용으로 바로 풀이를 해볼게요!
* 효율성이 떨어져도 이해해주세요! 피드백 감사하게 받겠습니다!
1. Solved with Java
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
import java.util.List;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Map;
import java.util.HashMap;
class Solution {
public int[] solution(String s) {
Map<String, String[]> check = new HashMap<String, String[]>();
List<Integer> resultList = new ArrayList<Integer>();
String[] splitStr = splitString(s);
return test(splitStr, resultList, check);
}
private static int[] test(String[] splitString, List<Integer> resultList,
Map<String, String[]> check){
for(int i=0; i<splitString.length; i++){
String[] tmpArr = splitString[i].split(",");
if(splitString.length==1){
int[] resultArr = {Integer.parseInt(tmpArr[0], 10)};
return resultArr;
} else {
check.put(""+tmpArr.length, tmpArr);
}
}
for(int i=1; i<splitString.length+1; i++){
for(String el:check.get(""+i)){
if(!resultList.contains(Integer.parseInt(el))){
resultList.add(Integer.parseInt(el));
}
}
}
int[] resultArr = new int[resultList.size()];
for(int i=0; i<resultList.size(); i++){
resultArr[i] = resultList.get(i);
}
return resultArr;
}
private static String[] splitString(String s){
s = s.replaceAll("\\{\\{", "");
s = s.replaceAll("\\}\\}", "");
return s.split("(\\},\\{)");
}
}
|
cs |
2. Solved with Python 2, 3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
def solution(s):
return parseString(s)
def parseString(s):
dictionary = {}
convert = s.split("},{")
if len(convert) == 1:
convert[0] = convert[0].split("{{")[1]
convert[0] = convert[0].split("}}")[0]
convert[0] = int(convert[0], 10)
return convert
convert[0] = convert[0].split("{")[-1]
convert[len(convert)-1] = convert[len(convert)-1].split("}")[0]
for i in range(0, len(convert)):
convert[i] = convert[i].split(",")
for i in convert:
dictionary[len(i)] = convert.index(i)
result = []
for i in range(1, len(convert)+1):
tmp = convert[dictionary[i]]
for j in tmp:
if int(j, 10) not in result:
result.append(int(j, 10))
return result
|
cs |
※ 여담이지만 솔직히 이번에 문제에서는 split("},{") 으로 나눠주면서 Java보다는 Python이 확실히 편하더군요. (개인적인 생각입니다!)
Python 에서는 "},{" 로만 해줘도 하나의 문자열로 인식을 하는데,
Java 에서는 중괄호를 각각 인식해주기 위해서 "\\"를 사용해야하지, ','를 넣어주고 따로 지정해주지 않으면
모든 ','를 split 대상으로 인식해서 다 split 되어 버리지... 그거 인식해주려고 소괄호로 묶어서 하나의 문자열로 인식을
해줘야 하는게 번거롭더군요. (제가 못해서 그래요 헿)
아무튼 각각의 어떤 언어가 좋고 나쁘다는 말할 수 없다고 생각하고, 각각의 장단점이 있는 것 같습니다.
위 코드의 결과는 직접 확인해 보세요 ~!
'프로그래밍 언어 > Programmers' 카테고리의 다른 글
Programmers 월간 코드 챌린지 시즌1 9월 문제 삼각 달팽이 with Java and Python (0) | 2020.09.20 |
---|---|
Programmers Level2 소수 만들기 with Java and Python (0) | 2020.09.12 |
Programmers Level2 소수찾기 with Java and Python (0) | 2020.08.29 |