풀이
- 해당 문제는 파이썬으로는 정말 간단하고 빠르게 해결할 수 있었을텐데
- 역시 익숙하지 않아 시간이 필요한 문제였다.
- 배열에 대한 다양한 사용방법에 대한 것과 비교하는 방법 등에 대한 문제로
- 계속 익숙해져야 할 문제인 것 같으며,
- 해결 방법으로는 spell 크기 만큼 0 값으로 채운 check와
- dic을 반복할때 마다 1로 채운 li를 생성한 다음
- 문자를 char 형태로 만든 배열을 만들고 이후 비교하면서 같다면 li에 특정 문자의 인덱스 위치에 -1씩 차감하고
- 이후 check,li의 배열을 비교하기 위해 Arrays.equals()를 사용하려는데
- 여기서 Collections.nCopies() 사용하면 고정된 배열을 사용하는 것이기에
- toArray()로 다시 배열 형태로 만들어서 비교하여 해결
class Solution {
public int solution(String[] spell, String[] dic) {
List<Integer> check = new ArrayList<>(Collections.nCopies(spell.length, 0)); // 체크 배열
for (String d: dic) {
List<Integer> li = new ArrayList<>(Collections.nCopies(spell.length, 1)); // 카운팅 배열
char[] ch_li = d.toCharArray(); // 문자 배열
for (int i=0; i < ch_li.length; i++) {
for (int j=0; j<spell.length; j++) {
if (ch_li[i] == spell[j].charAt(0)) li.set(j,li.get(j)-1);
}
}
if (Arrays.equals(check.toArray(), li.toArray())) return 1;
}
return 2;
}
}
'알고리즘' 카테고리의 다른 글
[프로그래머스, 자바] 배열 자르기 (0) | 2024.03.16 |
---|---|
[프로그래머스, 자바] 배열 뒤집기, 문자열 뒤집기 (0) | 2024.03.16 |
[프로그래머스, 자바] 캐릭터의 좌표 (0) | 2024.03.15 |
[프로그래머스, 자바] 로그인 성공? (0) | 2024.03.15 |
[프로그래머스, 자바] 다항식 더하기 (1) | 2024.03.15 |